2016-07-22 8 views
0

У меня есть столбец в mysql db, который содержит несколько идентификаторов, разделенных запятой, например ... 100, 112, 324. Столбец определяется как varchar.Выберите поиск строк с идентификатором в столбце, который содержит несколько идентификаторов, разделенных запятой

Я хочу найти те строки, чей столбец идентификаторов содержит идентификатор 112 или какой-либо другой идентификатор, который я указываю. Подобные вопросы, которые я нашел, предполагают разделение значений в столбце с использованием длинного кода. Возможно, я ошибаюсь, но я думаю, что есть более чистый подход. Вот что я пытаюсь сделать, любая помощь оценивается ...

<?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>"; 
} 

?> 

Я получаю пустую страницу как есть.

+0

Постарайтесь окружить вопросительный знак одним типом: $ stm = $ conn-> prepare ("SELECT * FROM subject WHERE ID LIKE '?'"); – Nosyara

+0

Я не уверен в PDO, но в MySQLi, подготовленные записи-заполнители '?' Не должны помещаться в кавычки – BeetleJuice

ответ

0

Посмотрите на этот PDO prepared statement:

попробуйте поместить «быть переплетены переменной» в массиве:

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

на основе быстрого теста, который, кажется, делает трюк. Большое спасибо! – Spaceman

0

одиночные кавычки для LIKE запроса, потому что у вас есть тип данных VARCHAR. Попробуйте следующее: $stm = $conn->prepare("SELECT * FROM subjects WHERE ids LIKE '?'"); $stm->execute($usrid);