我写了以下代码:
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 ;
?>
答案 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);