Jump to content
php.lv forumi

par dinamisku sql pieprasīju veidošanu


sviesc

Recommended Posts

ir ideja izveidot dinamiskus sql pieprasījumus t.s.

if(...){

$sql = "where id='$id'";

}

else

{

$sql = "where id2='$id2' AND id='$id'";

}

 

bet problēmas rodas mainīgajos saglabājot parametrus, kuri satur nežēlīgi daudz '' vai "" php apjūk

ir kādas idejas šādu pieprasījumu veidošanā?

vai varbūt ieteikumi kā labāk kā nē?

 

ā un vai ir iespējams (droši vien, ka ir ar php gandrīz visu tak var dabūt gatavu :P)

$manīgajos saglabāt ne visu sql pieprasījumu ar visiem select * from etc, bet teiksim tikai where daļu vai like daļu vai sazina ko citu un ar php palīdzību pie konkrētā gadījuma just izsaukt...

Link to comment
Share on other sites

$params = array('viens'=> 'divi', 'triis' => 'cetri', 'pieci' => 'sesi' );

$sqlWhereParts = array();

foreach ($params as $key => $value){

$sqlWhereParts[] = $key . '="' . $value . '"';

}

 

$sqlQuery = 'SELECT * FROM tabula WHERE ' . join(' AND ', $sqlWhereParts);

Link to comment
Share on other sites

  • 3 weeks later...
bet problēmas rodas mainīgajos saglabājot parametrus, kuri satur nežēlīgi daudz '' vai "" php apjūk

ir kādas idejas šādu pieprasījumu veidošanā?

vai varbūt ieteikumi kā labāk kā nē?

Tipa tā - nesapratu precīzi ko domāji, bet doma tāda, ka jā, patiešām ar apostrofiem un pēdiņām iekš PHP ir liela ķēpa. Iesaku iekš php.ini uzstādīt magic_quotes_gpc=off un tālāk rīkoties sekojoši:

1) pirms kādu stringu liekam iekšā SQL statementā, izpildam uz viņa addslashes()

2) pirms kādu stringu (kas ir izselektēts no SQL) izvadīt HTMLā, izpildam uz viņa htmlspecialchars().

 

Un nebūs problēmu, ja vien neaizmirsīsi šīs 2 funkcijas pareizajās vietās lietot.

Link to comment
Share on other sites

1) pirms kādu stringu liekam iekšā SQL statementā, izpildam uz viņa addslashes()

12384[/snapback]

addslashes() vietā labāk izmantot atbilstošo DBVS funkciju, piemēram, mysql_real_escape_string(), sqlite_escape_string() vai vēl kādu citu. Vienkārši dažādām DBVS ir dažādi uzskati par to, kā ir jāizvairās no ', " un citiem jūtīgajiem simboliem ;)

2) pirms kādu stringu (kas ir izselektēts no SQL) izvadīt HTMLā, izpildam uz viņa htmlspecialchars().

12384[/snapback]

atkarīgs no tā, vai tu gribi redzēt HTML, vai nē :P

Link to comment
Share on other sites

×
×
  • Create New...