mysql — PHP num_returns всегда возвращает 1

РЕДАКТИРОВАТЬ: Решено

Я нашел решение, которое искал. Спасибо Алексу за указание на мою ошибку.

Я пытался подсчитать количество незаполненных результатов запроса.

Вот как я это сделал:

function checkImages($id)
{
global $mysqli;
$stmt = $mysqli->prepare("SELECT
Img_1,
Img_2,
Img_3,
Img_4,
Img_5,
Img_6,
Img_7,
Img_8,
Img_9,
Img_10,
Img_11,
Img_12,
Img_13,
Img_14,
Img_15,
Img_16,
Img_17,
Img_18,
Img_19,
Img_20,
Img_21,
Img_22,
Img_23,
Img_24,
Img_25,
Img_26,
Img_27,
Img_28,
Img_29,
Img_30
FROM kittens
WHERE
id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($img1, $img2, $img3, $img4, $img5, $img6, $img7, $img8, $img9, $img10, $img11, $img12, $img13, $img14, $img15, $img16, $img17, $img18, $img19, $img20, $img21, $img22, $img23, $img24, $img25, $img26, $img27, $img28, $img29, $img30);
while ($stmt->fetch()){
$row[] = array('Img_1' => $img1, 'Img_2' => $img2, 'Img_3' => $img3, 'Img_4' => $img4, 'Img_5' => $img5, 'Img_6' => $img6, 'Img_7' => $img7, 'Img_8' => $img8, 'Img_9' => $img9, 'Img_10' => $img10, 'Img_11' => $img11, 'Img_12' => $img12, 'Img_13' => $img13, 'Img_14' => $img14, 'Img_15' => $img15, 'Img_16' => $img16, 'Img_17' => $img17, 'Img_18' => $img18, 'Img_19' => $img19, 'Img_20' => $img20, 'Img_21' => $img21, 'Img_22' => $img22, 'Img_23' => $img23, 'Img_24' => $img24, 'Img_25' => $img25, 'Img_26' => $img26, 'Img_27' => $img27, 'Img_28' => $img28, 'Img_29' => $img29, 'Img_30' => $img30);
}
$stmt->close();
return ($row);
}

Затем:

$id = $_GET['id'];
$kitties = checkImages($id);
if(is_array($kitties)){
foreach($kitties as $row){
$total = count(array_filter($row));
}
}

Я оставлю свой старый вопрос, чтобы другие могли учиться на моих ошибках.

Я пытаюсь вернуть количество строк, которые не являются пустыми в запросе SQL. Каждый раз, когда я пытаюсь, результат всегда равен 1. Я пытался изменить несколько вещей, но все равно, кажется, 1.

Изменить: я хочу посчитать количество запрашиваемых строк, которые не являются пустыми. Строки (Img_ #) содержат путь и имя файла изображений.

Так, например, в id 12 хранится 20 изображений. Для каждого сохраненного изображения местоположение и имя файла хранятся в одном из полей img_ #. Поэтому, когда я запрашиваю таблицу, я хотел бы проверить, сколько из 30 полей img_ не являются пустыми.

Вот моя первая попытка:

function checkImages($id)
{
global $mysqli;
$stmt = $mysqli->prepare("SELECT
Img_1,
Img_2,
Img_3,
Img_4,
Img_5,
Img_6,
Img_7,
Img_8,
Img_9,
Img_10,
Img_11,
Img_12,
Img_13,
Img_14,
Img_15,
Img_16,
Img_17,
Img_18,
Img_19,
Img_20,
Img_21,
Img_22,
Img_23,
Img_24,
Img_25,
Img_26,
Img_27,
Img_28,
Img_29,
Img_30
FROM kitties
WHERE
id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->store_result();
$num_returns = $stmt->num_rows;
$stmt->close();

if ($num_returns > 0)
{
return $num_returns;
}
else
{
return false;
}
}

Вторая версия:

function checkImages($id)
{
global $mysqli;
$stmt = $mysqli->prepare("SELECT
Img_1,
Img_2,
Img_3,
Img_4,
Img_5,
Img_6,
Img_7,
Img_8,
Img_9,
Img_10,
Img_11,
Img_12,
Img_13,
Img_14,
Img_15,
Img_16,
Img_17,
Img_18,
Img_19,
Img_20,
Img_21,
Img_22,
Img_23,
Img_24,
Img_25,
Img_26,
Img_27,
Img_28,
Img_29,
Img_30
FROM kitties
WHERE
id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($img1, $img2, $img3, $img4, $img5, $img6, $img7, $img8, $img9, $img10, $img11, $img12, $img13, $img14, $img15, $img16, $img17, $img18, $img19, $img20, $img21, $img22, $img23, $img24, $img25, $img26, $img27, $img28, $img29, $img30);
while ($stmt->fetch()){
$row[] = array('Img_1' => $img1, 'Img_2' => $img2, 'Img_3' => $img3, 'Img_4' => $img4, 'Img_5' => $img5, 'Img_6' => $img6, 'Img_7' => $img7, 'Img_8' => $img8, 'Img_9' => $img9, 'Img_10' => $img10, 'Img_11' => $img11, 'Img_12' => $img12, 'Img_13' => $img13, 'Img_14' => $img14, 'Img_15' => $img15, 'Img_16' => $img16, 'Img_17' => $img17, 'Img_18' => $img18, 'Img_19' => $img19, 'Img_20' => $img20, 'Img_21' => $img21, 'Img_22' => $img22, 'Img_23' => $img23, 'Img_24' => $img24, 'Img_25' => $img25, 'Img_26' => $img26, 'Img_27' => $img27, 'Img_28' => $img28, 'Img_29' => $img29, 'Img_30' => $img30);
}
$num_returns = $stmt->num_rows;
$stmt->close();
return ($num_returns);
}

Любой совет будет принята с благодарностью. Благодарю.

-2

Решение

Это не настоящий ответ

Не очень понятно, о чем вы просите, так как вы не предоставили ни таблицы boats схема не kitties схемы.

Так что я думаю: у вас есть уникальный id Индекс против обеих таблиц. Это означает, что когда вы делаете запрос с WHERE id = ? MySQL ДОЛЖЕН вернуть 1 строку, потому что (как я уже говорил) id уникален

Так какой у тебя вопрос? У вас есть несколько записей с одинаковыми id в любой из этих таблиц? почему вы используете 2 разных таблицы в вашем вопросе?

Попробуйте уточнить, в чем ваша проблема.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector