PHP Mysqli подготовленный оператор select fetch_asso c дает пустой результат - PullRequest
0 голосов
/ 08 января 2020

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

Вот скрипт, который я хочу запустить:

<?php
$passedID = $_POST["upvotedurl"];

$mysqli = new mysqli('localhost', 'root', '', 'osscom_users_test');

$sqlstm = "SELECT * FROM image_uploads WHERE THMPATH=?";
$fstmt = $mysqli->prepare($sqlstm);
$fstmt->bind_param("s", $passedID);
$fstmt->execute();
$fstmt->store_result();
$json = $fstmt->get_result()->fetch_assoc();

foreach ($json as $value) {

    $val1 = $value['THMPATH']; // this is empty, why???

    $sql = "UPDATE image_uploads SET IMGNAME=? WHERE THMPATH=?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("ss", $val1, $passedID);
    $stmt->execute();
    $stmt->close();
}
$fstmt->close();
$mysqli->close();
?>

для странного Причина, по которой я не могу объяснить переменную $value из запроса SELECT, пуста.

Как вы можете видеть в примере, я получаю THMPATH, который определенно не пуст, и я также использую то же значение для UPDATE ниже. Если бы я использовал что-то вроде $val1 = "Wololo", это работало бы без проблем.

Почему мой $value (в данном случае $value['THMPATH']) пуст? Это не имеет смысла?

Обновление

При запуске file_put_contents('../session/log.txt', print_r($json, true)); это результат:

Array
(
    [ID] => 511
    [OWNER] => User Name
    [IMGNAME] => Wagirigoingi
    [IMGTAGS] => image, photo, picture
    [IMGPATH] => 1028525690.jpg
    [THMPATH] => ../thumbnails/5560921208_username.jpg
    etc..
)

Итак, выбор работал, но я все еще не могу получить значения.

1 Ответ

2 голосов
/ 08 января 2020

Ваш результат - одна запись в массиве. Когда вы сделаете foreach ($json as $value), $value будет иметь 511, Имя пользователя, Wagirigoingi и др. c. В какой-то момент $value будет иметь значение, соответствующее THMPATH в массиве $json, но $value никогда не будет массивом, поэтому $value['THMPATH'] никогда не будет действительным.

Предположительно, вам нужно просто полностью исключить foreach l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...