MariaDB 中的语法更新 id 失败

Posted

技术标签:

【中文标题】MariaDB 中的语法更新 id 失败【英文标题】:Failed syntax UPDATE id in MariaDB 【发布时间】:2019-03-17 16:47:20 【问题描述】:

当我尝试使用 php 更新数据库中的表时,出现以下错误。

QUERY FAILED 您的 SQL 语法有错误;检查手册 对应于正确语法的 MariaDB 服务器版本 在第 1 行的 '' 附近使用

(第一行是我的查询开始的地方)

我已经得出结论,这与 "id" 有关系,但我不知道是什么。如果我将其硬编码为 "WHERE id = 1" 它可以工作,但它似乎并没有读取 id。

if(isset($_POST['submit']))

    $username = $_POST['username'];
    $password = $_POST['password'];
    $id = $_POST['id'];

    $query = "UPDATE users SET ";
    $query .= "username = '$username', ";
    $query .= "password = '$password' ";
    $query .= "WHERE id = $id ";

    $result = mysqli_query($connection, $query);
    if(!$result) 

        die("QUERY FAILED" . mysqli_error($connection));    
      

这是我用于 ID 的 HTHML:

<form action="login_update.php" method="post">

<div class="form-group">
            <select name="id" id="">
        <?php
    global $connection; 
            $query = "SELECT * FROM users";
            $result = mysqli_query($connection, $query);
            if(!$result) //om result inte är TRUE then die()
                die('Query failed ' .mysqli_error());
            

            while($row = mysqli_fetch_assoc($result))
            $id = $row['id'];
            echo "<option value=''>$id</option>";
        ?>
    </select>

</div>

  <input class="btn btn-primary" type="submit" name="submit" value="Update">

        </form>

我在 localhost 上运行它,因此不需要任何散列,并且与数据库的连接工作正常。

【问题讨论】:

可能 $_POST['id'] 为空 你的代码对SQL injection相关的攻击是开放的。请学会使用Prepared Statements &lt;select name="id" id=""&gt; global $connection; 这里没有打开php标签吗? echo $query; die();会给你答案。 参数化您的查询。散列您的密码。使用mysqli_error 中的连接链接。还要注意来自mysql 的错误与 SQL 相关,而不是 PHP,因此at line 1 是 SQL 的第一行,而不是 PHP。 【参考方案1】:

像这样添加查询:

$query .= "WHERE id = '$id' ";

【讨论】:

对不起什么都没做。它完成了查询,但没有更新任何记录 在'$id'中添加$id 如 "WHERE $id = '$id' ? 这就是我上面得到的那行不通的……正如我所说的;它完成了查询(因为它不会抛出错误),但没有更新记录 @Saucepan 它确实做了一些事情,即不再抛出错误。如果您还有其他问题,请在另一个问题中提出。【参考方案2】:

为选择框选项添加值

echo "<option value='$id'>$id</option>";

【讨论】:

对不起,但那绝对没有作用:( 你在帖子中获得了 Id 值 @Saucepan 请将您的整个表格填写在您的问题中。 @Saucepan 我的意思是把从&lt;form&gt;&lt;/form&gt; 的所有内容都放在你的问题中。查看所有字段会很有帮助。 在您的表单中,用户名和密码输入字段丢失

以上是关于MariaDB 中的语法更新 id 失败的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 6.x迁移因Maria DB而失败

MariaDB/MySQL 中的 CREATE PROCEDURE 出现神秘错误

表情符号作为 MariaDB 主键中的问号

Maria DB 安装

Maria DB 中发生奇怪的缓存,查询选择最小的可用 id

Redhat 7 Maria DB安装与配置