HTML FILE:PHP: Не удается запустить тот же запрос MySQL несколько раз
<form method="post" action="generate.php">
Product Reference(s): (if multiple, separate by ",")<br />
<input type="text" name="project_ref" value="REF123, REF124" />
<input type="submit" value="Generate" />
</form>
PHP FILE:
<?php
$ref_array = explode(',', $_POST['project_ref']);
foreach ($ref_array as &$ref) {
// Create connection
$conn = mysqli_connect($host, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM `inventory` WHERE reference = '$ref' LIMIT 1";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "Brand: " . $row["brand"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
}
?>
РЕЗУЛЬТАТЫ:
Марка: Bose
0 Результаты
Но я на самом деле хотел:
Торговая марка: Bose
Торговая марка: Beats
Таким образом, проблема заключается в том, что запрос MySQL не выполняется для каждого элемента массива. Его единственный исполняющий первый элемент массива.
Похоже, что второй код «ref» возвращает нулевые результаты. Возможно, вам нужно ['trim()'] (http://php.net/manual/en/function.trim.php) пробел каждого '$ ref' перед выполнением запроса? Кстати, вам нужно только подключиться к базе данных один раз, а не на каждой итерации цикла. – showdev
Есть ли какая-то конкретная причина, по которой вам необходимо передать ref как '& $ ref'? –
Возможно, это может вам помочь. https://php.net/manual/en/mysqli.multi-query.php – Ciprian