sql >> Databasteknik >  >> RDS >> Mysql

Använda en PHP-variabel före en MYSQL-fråga

Förutom den allmänt populära rekommendationen för att inte använda mysql_*-funktioner,
måste du se till att du inte har några blanksteg i dina arrayelement.

Här är ett exempel på kod för att ta bort och felsöka frågan vid varje steg.

<?php

$elements = array('  element A', "\t Element B \r\n");

var_dump($elements);

/*
use var_dump to check your array elements for whitespace and such
array(2) {
  [0]=>
  string(11) "  element A"
  [1]=>
  string(14) "   Element B
"
}
*/

// create your IN clause string and verify it
$joinedString = "('" . join("','",array_map('trim',$elements)) . "')";

var_dump($joinedString);
/*
use var_dump not echo
string(25) "('element A','Element B')"

*/

// your query string finally becomes
$query = "SELECT * FROM smoelenboek 
WHERE sectie1 IN $joinedString 
OR sectie2 IN $joinedString 
OR sectie3 IN $joinedString 
OR sectie4 IN $joinedString 
OR sectie5 IN $joinedString 
AND actief='ja' ORDER BY achternaam ASC";

// and check it with var_dump and also run it in PhpMyAdmin
var_dump($query);
/*
string(280) "SELECT * FROM smoelenboek
WHERE sectie1 IN ('element A','Element B')
OR sectie2 IN ('element A','Element B')
OR sectie3 IN ('element A','Element B')
OR sectie4 IN ('element A','Element B')
OR sectie5 IN ('element A','Element B')
AND actief='ja' ORDER BY achternaam ASC"
*/


  1. MySQL:Alla tabeller OK men fortfarande ERROR 1577 (systemtabeller som används av Event Scheduler hittades skadade)

  2. Använd samma parameter flera gånger i WHERE-villkoren för en SQL-fråga för användning i JDBC

  3. Vad är syftet med character_set_connection?

  4. Oracle 12c klientinstallationsfel