Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 致命错误:未捕获错误:无法将PDOStatement类型的对象用作数组_Php_Mysql_Select_Pdo_Fatal Error - Fatal编程技术网

Php 致命错误:未捕获错误:无法将PDOStatement类型的对象用作数组

Php 致命错误:未捕获错误:无法将PDOStatement类型的对象用作数组,php,mysql,select,pdo,fatal-error,Php,Mysql,Select,Pdo,Fatal Error,我想要一个php脚本,它从我的db表中随机选择一行,并将“Dispensed”的值更改为1。 我肯定这有点愚蠢,但我对这东西还不熟悉 这是我的密码: <?php $hostname = 'localhost'; $user = 'root'; $pass = ''; $database = 'testt'; $db_connection = new PDO( "mysql:host=" . $hostname . ";dbname=" . $database, $user, $pas

我想要一个php脚本,它从我的db表中随机选择一行,并将“Dispensed”的值更改为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;
编辑:试过了

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

但效果并不理想:(

PDO::query-执行SQL语句,将结果集作为PDOStatement对象返回。您试图在更新查询中以数组形式访问$results。因此您看到了此错误。您需要从for循环中的$row中捕获'id'值,然后运行更新查询。

@dangerseek太好了……请您投票给我好吗答案是什么?
$test = $results;
$db_connection->query( 'UPDATE accounts SET dispensered=1 WHERE 
id='.$test['id'].'' );