2016-06-07 4 views
0

Ich erhalte einige Werte von einem Array und eine Übereinstimmung mit diesen Werten in einer SQL-Abfrage.Anordnen eines Array-Werts zu SQL Query Error

Der Code hierfür ist wie folgt:

foreach($files as $ex){ 

     $search = substr($ex,3,4); 

    $sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> ' .$search. ' LIMIT 6'; 

    $result = mysql_query($sql) or die(mysql_error()); 

    while($row = mysql_fetch_array($result)){ 

    $pdb[] = $row['pdb_code']; 
    } 
} 

Das Problem, das ich habe, ist

Sie haben einen Fehler in Ihrer SQL-Syntax; das Handbuch, dass zu Ihrer MySQL-Server-Version entspricht, die für die richtige Syntax in der Nähe von 'LIMIT 6' in Zeile 1

Bitte helfen .. Danke

+2

Sie Zitate vergessen Haben Sie nicht? –

+0

Sie müssen Ihre '$ seach' in Anführungszeichen einschließen. – Ali

Antwort

0

hinzufügen Anführungszeichen zu verwenden:

$sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> "' .$search. '" LIMIT 6'; 
+0

Danke Dhara Parmar – rampal

0

Während Sie die Abfrage im einfachen Anführungszeichen schreiben und die Variable erneut in einem einfachen Anführungszeichen drucken, wird die Abfrage beim Drucken dieser Abfrage wie folgt angezeigt:

'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> ' 

so dass es lesen Sie den ganzen Weg müssen Sie Variable in Anführungszeichen umschließen .. ich hoffe, diese Beschreibung wird dazu beitragen. Sie können es wie eine dieser schreiben ..

'SELECT xyz FROM abc WHERE xyz = "'.$abc.'" '; 

ODER

"SELECT xyz FROM abc WHERE xyz = '.$abc.'" 
+0

Vielen Dank LaviJ – rampal

0

es in doppelte Anführungszeichen Rewrite Ihre Anfrage, indem sie:

Statt diese:

$sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> ' .$search. ' LIMIT 6'; 

Try dies:

$sql = "SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> ' .$search. ' LIMIT 6"; 
+0

Danke offiziell – rampal

0

Bitte verwenden Sie nicht die Funktion mysql_query() - sie ist in PHP < php7 veraltet und seit php7 wird sie entfernt. Die beste Vorgehensweise für jetzt ist die Verwendung von PDO. Wenn Sie dies auf alte Weise tun müssen, verwenden Sie mysqli_query.

Meiner Meinung nach ist das Beste, was Sie tun können, ist die folgende:

$db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'username', 'password'); 
$statement = $db->prepare('SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> :search LIMIT 6'); 
$statement->execute([':search' => $search]); 
$resultAsAnArray = $statement->fetchAll(PDO::FETCH_ASSOC);