Неустранимая ошибка: необработанная ошибка: невозможно использовать объект типа PDOStatement в качестве массива - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу сценарий php, который дает мне случайно выбранную строку из моей таблицы БД и меняет значение «распределено» на 1. Я уверен, что это довольно глупо, но я новичок в этом деле.

Здесьмой код:

<?php

$hostname = 'localhost';
$user = 'root';
$pass = '';
$database = 'testt';

$db_connection = new PDO( "mysql:host=" . $hostname . ";dbname=" . $database, 
$user, $pass );

$results = $db_connection->query( 'SELECT username, password FROM accounts WHERE dispensered = 0 ORDER by rand() LIMIT 1' );

$db_connection->query( 'UPDATE accounts SET dispensered=1 WHERE id='.$results['id'].'' );

foreach ( $results as $row ) {
    echo '<p id="username">' . $row['username'] . '</p>';
    echo '<p id="password">&ndash;' . $row['password'] . '</p>';
}




// Close the connection
$db_connection = null;

С наилучшими пожеланиями

Fatal error: Uncaught Error: Cannot use object of type PDOStatement as 
array in C:\xampp\htdocs\test\index.php:13 Stack trace: #0 {main} thrown 
in C:\xampp\htdocs\test\index.php on line 13

РЕДАКТИРОВАТЬ: пробовал;

1 Ответ

0 голосов
/ 11 февраля 2019

PDO :: query - Выполняет оператор SQL, возвращая набор результатов в виде объекта PDOStatement.Вы пытаетесь получить доступ к $ results в виде массива в своем запросе на обновление.Следовательно, вы видите эту ошибку.Вам нужно захватить значение 'id' из строки $ в цикле for и выполнить запрос на обновление после этого.

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