Я знаю, что это довольно старое время, но я хотел бы помочь другим, кто также может столкнуться с подобной проблемой с операторами SQL, которые должны содержать сгенерированные потенциально бесконечные числа параметров поиска.
Код в вопросе задающего является совершенно верным (во избежание сомнений) [см. Ниже]:
$file = file('parts_array.txt');
foreach ($file as $newPart)
{
$sql = "SELECT products_sku FROM products WHERE products_sku='" . $newPart . "'";
$rs = mysql_query($sql);
$num_rows = mysql_num_rows($rs);
echo $num_rows;
echo "<br />";
}
Их проблема заключается в форматировании их текстового файла ('parts_array.txt'). Первопричину проблемы можно найти, сбросив информацию, отправленную обратно сервером. В качестве альтернативы - они могут попробовать написать SQL-запрос в PHPMyAdmin и вставить некоторые или все данные в свой текстовый файл. MySQL будет радовать их, пока они не найдут проблему.
Для тех, кто пытается реализовать SQL-запрос, основанный на переменных - вышеописанный способ.
Если вы пытаетесь получить данные из массива вместо текстового файла, вы можете сделать что-то вроде следующего:
foreach ($array as $array_stuff)
{
$search_query = "SELECT * FROM table WHERE id='" . $array_stuff . "'";
$rs = mysqli_query($database_connection, $search_query);
$table_rows = mysqli_fetch_assoc($rs);
echo $table_rows['id']." - ".$table_rows['desc'];
echo "<br />";
}
/* free result set */
mysqli_free_result($rs);
Это выведет ваши данные так:
1001 - данные 1
1002 - данные 2
1003 - данные 3
Примечание: MySQL активно не рекомендует использовать функции «mysql». Поэтому второй пример, который я привел выше, более актуален с современными технологиями и использует вместо него «mysqli».
Также важно
Если вы находитесь здесь из поиска Google в результате попытки получить данные из базы данных, используя сложный SQL-запрос, вы, возможно, уже пытались сделать что-то вроде приведенного ниже примера (или рассматриваете его).
Не пытаться написать SQL-запрос на основе переменных, как показано в примере ниже. Это не сработает и будет невероятно разочаровывающим.
Основываясь на последних технологических достижениях - второй пример, который я привел (используя «mysqli»), - правильный способ (если он есть) для достижения этой цели.
Плохой пример:
if ($search_result = mysqli_query($dbh1, "SELECT FROM sic_codes WHERE id = (".foreach ($_POST['SIC_Codes'] as $sic_codes) {echo "'".$sic_codes."' OR id = '',";})) {
/* fetch associative array */
while ($search_row = mysqli_fetch_assoc($search_result)) {
echo $row["id"]." - ".$row["desc"]."<br/>";
}