ошибка после отправки запроса в БД
Понадобилось сделать много инпутов (больше 100) и присвоить им уникальные номера для работы с БД, суть проблемы такова, после отправки пост запроса с данными из инпутов вылетает ошибка которая ругается на запрос к БД (хотя запрос срабатывает и в базу все корректно записывается)
"Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in .... on line 17"
function select($query) {
global $conn;
$queryResult = [];
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) { || line 17 ||
while($row = mysqli_fetch_assoc($result)) {
$queryResult[] = $row;
}
}
return $queryResult;
}
и выдает ошибку на header() Warning: Cannot modify header information - headers already sent by ... on line 84
case ($_POST['range'] != ''):
if (isAdmin()){
foreach ($_POST['range'] as $key => $value) {
$range_update = "UPDATE warehouse SET range".$key[0]."='$value' WHERE id =".$key[2].$key[3];
$ranges = select($range_update);
}
header("Location: /warehouse/".$route[1]); || line 84||
break;
}
а так выглядит инпут который делает отправку через POST. в name массиве у инпута 0 элемент 1-8, а 1 элемент 1-64. поэтому соорудил такого монстра (если вдруг вопрос образуется)
$out .= "<td><input name=range[1,".$warehouse_out[$i]['id']."] class='wirehouse' type='text' placeholder=".$warehouse_out[$i]['range1']."></td>";
Ответы (1 шт):
Функция mysqli_query() возвращает количество строк только при операциях SELECT, SHOW, DESCRIBE, или EXPLAIN. В остальном случае он возвращает TRUE или FALSE в зависимости выполнился запрос или нет.
Далее передаете это в функцию mysqli_num_rows(), который и говорит что получил булево значение вместо результата/таблицы. Как вариант, используйте mysqli_affected_rows() вместо нее, которая возвращает количество затронутых строк с самого последнего выполненного запроса на $conn:
if (mysqli_affected_rows($conn) > 0) {
...
}