2016-07-22 16 views
0

Ich habe eine Spalte in mysql db, die mehrere IDs durch ein Komma getrennt wie folgt enthalten ... 100,112,324. Die Spalte ist als varchar definiert.Wählen Sie Zeilen suchen mit einer ID in einer Spalte, die mehrere IDs durch ein Komma getrennt enthält

Ich möchte diejenigen Zeilen finden, deren ID-Spalte die ID 112 oder eine andere ID enthält, die ich angeben. Ähnliche Fragen, die ich gefunden habe, schlagen vor, die Werte in der Spalte unter Verwendung eines langen Codes aufzuteilen. Vielleicht liege ich falsch, aber ich würde denken, dass es einen saubereren Ansatz gibt. Hier ist was ich versuche zu tun, jede Hilfe wird geschätzt ...

<?php 

include "../connect.php"; 
$usrid = "%112%"; 

$stm = $conn->prepare("SELECT * FROM subjects WHERE ids LIKE ?"); 
$stm->execute($usrid); 
while($row = $stm->fetch(PDO::FETCH_ASSOC)) { 
echo $row['consultant']."<br>"; 
} 

?> 

Ich bekomme eine leere Seite, wie es ist.

+0

Versuchen Sie, Fragezeichen mit einzelnen Quates zu umgeben: $ stm = $ conn-> prepare ("SELECT * FROM Betreff WHERE IDs LIKE '?'"); – Nosyara

+0

Ich bin nicht sicher über PDO, aber in MySQLi, vorbereitete Anweisung Platzhalter '?' Sollte nicht in Anführungszeichen setzen – BeetleJuice

Antwort

0

Schauen Sie sich das PDO prepared statement:

Versuchen Sie das Putting "werden binded Variable" in einem Array:

$stm->execute(array($usrid)); 
+0

basierend auf einem schnellen Test, der den Trick zu tun scheint. Ein großer Dank! – Spaceman

0

Verwendung Apostrophe für LIKE-Abfrage, da Sie Datentyp varchar haben. $stm = $conn->prepare("SELECT * FROM subjects WHERE ids LIKE '?'"); $stm->execute($usrid);