Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP更新表逗号错误_Php_Mysql - Fatal编程技术网

PHP更新表逗号错误

PHP更新表逗号错误,php,mysql,Php,Mysql,我正在更新phpmyadmin中的一个表,如下所示。我的问题基本上是:为什么我需要在'$username'后面加逗号,即这个$query.=“username='$username',”不确定为什么需要这个逗号 function UpdateTable() { global $connection; $username = $_POST['username']; $password = $_POST['password']; $id = $_POST['id'];

我正在更新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));
    }
}

因为这是MySQL语法。检查MySQL文档:

不必遵循
“$user\u name”

必须在下一次作业之前,在下一行

就像
“$password”
后面的空格一样,严格来说并不需要

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));
    }
}
在下一行的
之前必须有空格,其中

将语句的格式想象为:

 UPDATE users
    SET username = ?
      , password = ?
  WHERE id = ? 
逗号是必需的,基本上读作“和也设置”

更好的模式是在需要的行上预先加上所需的空格和/或逗号。而不是记着在不需要的地方去做。e、 g

$sql = "UPDATE users";
$sql.= " SET username = ?";
$sql.= ", password = ?";
$sql.= " WHERE id = ?"; 
在这里没什么区别。但当您实际需要动态生成SQL时,这种模式就容易多了


还有一些想法

不要在数据库中存储明文密码。而是存储哈希值

代码似乎易受SQL注入攻击


将准备好的语句与绑定占位符一起使用。。。静态SQL文本,不是动态生成的SQL。

PHPMyAdmin不是数据库。它是MySQL数据库的web界面。逗号是必需的,因为这是
UPDATE
语句的正确SQL语法。永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,请确保您在它们上安装或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。表示了解的语句。即使是这样也不安全!我投票结束这个问题,因为如果OP阅读了优秀的用户手册,他会看到正确的SQL语法。谢谢:),我不知道我认为这与我以前经常弄糟的一些间距问题有关(比如在设置后忘记放置空格)