我正在更新phpmyadmin中的表格。我的问题基本上是:为什么我需要'$username'
之后的逗号,即$query.="username = '$username' , ";
不确定为什么这个逗号是必要的。
function UpdateTable()
{
global $connection;
$username = $_POST['username'];
$password = $_POST['password'];
$id = $_POST['id'];
$query = "UPDATE users SET "; // username is the name of the column in the database, you need the space in between
$query.="username = '$username' , ";
$query.= "password = '$password' ";
$query.= "WHERE id = $id ";
$result = mysqli_query($connection,$query);
if(!$result)
{
die("Query failed". mysqli_error($connection));
}
}
答案 0 :(得分:1)
因为那是MySQL语法。检查MySQL文档:http://dev.mysql.com/doc/refman/5.7/en/update.html
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
答案 1 :(得分:0)
没有必要关注 '$user_name'
。
下一行的下一个作业必须在前面。
就像'$password'
之后的空格不是绝对必要的。
在下一行的WHERE
之前,空间是必要的。
将该语句视为格式如下:
UPDATE users
SET username = ?
, password = ?
WHERE id = ?
逗号是必需的,基本上读作“也是SET”
更好的模式是在需要它的行上添加所需的空格和/或逗号。而不是记住在不需要它的行上这样做。 e.g。
$sql = "UPDATE users";
$sql.= " SET username = ?";
$sql.= ", password = ?";
$sql.= " WHERE id = ?";
这里没有太大区别。但是当你真正需要动态生成SQL时,这种模式就容易多了。
一些额外的想法。
NOT 在数据库中存储明文密码。改为存储哈希值。
代码似乎容易受到SQL注入攻击。
使用带有绑定占位符的预准备语句...静态SQL文本,而不是动态生成的SQL。