Jump to content
php.lv forumi

Pareizs pieprasījums?


Lynx

Recommended Posts

Šodien programējot nonācu interesantā situācijā, no 3 dažādiem iepriekšēji uzrakstītiem kodiem nokopēju vienu mysql selectu. Un sāku domāt kurš ir pareizākais(ātrāks, etc) variants. Strādā visi, bet cik korekti?

 

$upg = mysql_fetch_assoc(mysql_query("SELECT * FROM blabla WHERE id = '$id' "));
$now = mysql_fetch_assoc(mysql_query('SELECT * FROM blabla WHERE id = "'.$id.'" '));
$max = mysql_fetch_array(mysql_query("SELECT tas, tas1 FROM blabla WHERE kautkas = '".$now['kautkas']."' "));

 

Cik es noprotu vispareizāk ir strādāt ar mysql_fetch_assoc, jo es ar izvilktajiem datiem strādāju tikai šādā veidā: $now['id']. Bet jautājums paliek par visām pēdiņām utt. Un vēl esmu manījis, ka dažreiz tiek rakstītas šādas pēdiņas apkart `tabulas_nosaukumam`. Man strādā viss bez, bet kapēc un kādos gadijumos jaliek tās pēdiņas?

Link to comment
Share on other sites

visi ir pareizi. pirmajiem diviem jātaisa pārbaude uz $id. vai vienkārši addslashes.

 

principā es rakstu šādi:

mysql_query("SELECT fields FROM table WHERE id='$id' AND arr='".get_arr()."'");

nu idejiski tā :)

 

kāpēc querijs ir " " nevis ' ' ? tāpēc, lai nebūtu entie backslashi ar \' \' B)

Link to comment
Share on other sites

pirmie divi selekti ir pilnīgi ekvivalenti un vienādi pēc ātrdarbības (SQL), bet php izpildīsies par mazu miliseknudes daļu ātrāk otrais.

 

Trešais selekts principā var atgriezt galīgi savādākus datus nekā pirmie divi (ļoti atkarīgs kādus datus domāts likt tabulā).

 

`` šīs pēdiņas SQLā liek ap stringiem, lai SQL nedomātu, ka tas strings ir kāds keywords. Tādējādi par tabulu/kolonu/indeksu/utt nosaukumiem var ņemt tādus vārdus kā select/where/date/u.c. rezervētos vārdus, kas nebūt nav ieteicams.

Link to comment
Share on other sites

×
×
  • Create New...