致命错误:未捕获的错误:无法使用类型PDOStatement对象的对象作为阵列

问题描述 投票:3回答:1

我想一个PHP脚本,让我随机选择行从我的数据库表和更改“dispensered”的值设为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

编辑:试过了;

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

但是,这并不工作,以及:(

php mysql select pdo fatal-error
1个回答
4
投票

PDO ::查询 - 执行SQL语句,返回设置为PDOStatement对象物体的结果。你试图访问$结果在您更新查询的数组。因此,你所看到的这个错误。您需要捕获从$行的“ID”值在for循环并在此之后运行更新查询。

© www.soinside.com 2019 - 2024. All rights reserved.