msqli php查询更新无效,返回无错误

时间:2015-08-10 10:03:51

标签: php mysql

我写了以下代码:

 public static function updateUser($userid, $username){
 $query = 'UPDATE users SET username=? WHERE id=?';
    $statement =  $GLOBALS["DB"]->prepare($query);
    $statement->bind_param('is', $userid, $username);
    $statement->execute();
    $statement->store_result();

    if ($statement->affected_rows == 1){
        return  1;
    }
    else{
        return $statement;
    }}

表的名称是正确的,我在方法中传递的数据也是,数据库很好,但是失败并且没有返回错误。当我尝试将语句数据返回到控制台时,它给了我:

  

mysqli_stmt对象([affected_rows] => 0 [insert_id] => 0 [num_rows]   => 0 [param_count] => 2 [field_count] => 0 [errno] => 0 [错误] => [error_list] => Array()[sqlstate] => 00000 [id] => 3)   { “状态”: “成功”}

我查了错误列表,它是空的。我是否需要设置一些内容以使其更新?任何人都知道它可以是什么? 数据库的创建方式如下:

<?php
    require_once ("simplecms-config.php");
    require_once ("./Functions/database.php");

    // Create database connection
    $databaseConnection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if ($databaseConnection->connect_error)
    {
        die("Database selection failed: " . $databaseConnection->connect_error);
    }
    // Create tables if needed.
    prep_DB_content();
    $GLOBALS['DB'] = $databaseConnection ;
?>

2 个答案:

答案 0 :(得分:3)

bind_param中的参数列表需要与查询本身中的参数列表匹配。

由于查询的用户名是第一个?和userid作为第二个?,这是bind_param调用必须使用的:

$statement->bind_param('si', $username, $userid);

答案 1 :(得分:2)

bind_param中的参数列表不匹配。

改变
$statement->bind_param('is', $userid, $username);

$statement->bind_param('si', $username, $userid);