我有一个数据库表,我正在以这种方式更新表列。
$mysqli = new mysqli('localhost', 'root', '', 'db');
if (mysqli_connect_errno()) {
echo 'failed to connect to db.. <br>' . mysqli_connect_errno();
return 'error';
}
$username = $data['username'];
$data['image'] = $this->replace_whitespace($data['image']);
foreach($data as $key=>$value){
$this->query = "UPDATE users SET $key=? WHERE username='$username'";
$this->statement = $mysqli->prepare($this->query);
if($this->statement){
$this->statement->bind_param('s', $value);
$this->statement->execute();
$this->statement->close();
}
}
是否可以一次更新多个表列。我试过这个但是徒劳无功。
$this->query = "UPDATE users SET col1=?, col2=?, col3=? WHERE username='$username'";
$this->statement = $mysqli->prepare($this->query);
if($this->statement){
$this->statement->bind_param('sss', $value1, $value2, $value3);
$this->statement->execute();
$this->statement->close();
}
有更好的方法吗?
$mysqli = new mysqli('localhost', 'root', '', 'db');
if (mysqli_connect_errno()) {
echo 'failed to connect to db.. <br>' . mysqli_connect_errno();
return 'error';
}
$username = $data['username'];
$this->query = "UPDATE users SET fname=?, lname=?, email=?, tpin=?, image=?, address=? country=?, city=?, state=?, postal=? WHERE username='$username'";
$this->statement = $mysqli->prepare($this->query);
if ($this->statement) {
$this->statement->bind_param('ssssssssss', $data['fname'],$data['lname'],$data['email'],$data['tpin'], $data['file'], $data['address'],$data['country'],$data['city'],$data['state'], $data['post_code']);
$this->statement->execute();
$this->statement->close();
}
这是我的真实代码。
答案 0 :(得分:3)
在col3 =?
之后删除“,”这将修复语法错误
答案 1 :(得分:1)
$this->query = "UPDATE users SET col1=?, col2=?, col3=?, WHERE username='$username'";
你有一个额外的逗号,这意味着你的SQL正在读取“WHERE”作为另一列,一切都搞砸了。
$this->query = "UPDATE users SET col1=?, col2=?, col3=? WHERE username='$username'";
应该可以正常工作。
在回答下面的评论时,这是正确的方法,所以它必须是某个错误的变量,你得到什么错误信息? (如果有的话)
也可能是您绑定的参数之一不是字符串。无论如何,我们需要一个更深入的例子。
答案 2 :(得分:0)
我认为它的工作方式与将新值放入数据库的方式相同。
答案 3 :(得分:0)
是否可以一次更新多个表列
是。实际上,在一个查询中更新许多字段是任何DBMS的核心功能。您始终可以期望它得到支持。
我试过这个但是徒劳无功。
嗯,你必须尝试更多,就像我们所做的一样。毕竟,这是你的工作。
关于“真实”代码的两个注释:
您必须配置mysqli以报告错误:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);