在SELECT之后PHP PHP affected_rows = -1

时间:2017-08-08 12:27:32

标签: php mysqli

我试着通过阅读来解决我的问题,但我找不到解决方案。 我在我的数据库中搜索id。 $ stmt-> affected_rows()始终为-1。 我不知道我在这里做错了什么......

$uuid = '76561198036258382';
if (!($stmt = $mysqli->prepare("SELECT steamid, personaname FROM cs_user 
WHERE steamid = ?"))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!$stmt->bind_param("s", $uuid)) {
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
if(!$stmt->execute()){
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
print_r($stmt);

好消息:我没有收到mysqli的错误。 坏消息:print_r的输出是:

mysqli_stmt Object
(
    [affected_rows] => -1
    [insert_id] => 0
    [num_rows] => 0
    [param_count] => 1
    [field_count] => 2
    [errno] => 0
    [error] => 
    [error_list] => Array
        (
        )
    [sqlstate] => 00000
    [id] => 1
)

但我正在搜索的ID是在我的数据库中。我做错了什么?

2 个答案:

答案 0 :(得分:1)

{p> 第一次 select count的{​​{1}} rows来自num_rows

第二名: Insert,update,delete affected row count将来自affected_rows

答案 1 :(得分:-1)

详细说明答案。

使用num_rows查询提取计数或数据,但是必须使用变量从查询结果中调用它们。
例如:

$query = $cnx->query("select * from users where users.username = '" . $user['username'] . "'");

$query->num_rows;

但是要使用受影响的行操作数据,可以直接从连接变量本身调用它。

$cnx->query("UPDATE users SET " . $query . " WHERE users.id = " . $_SESSION['user']['id'] . ";")

$cnx->affected_rows