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<select name="id" id=""> 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 我的意思是把从<form>
到</form>
的所有内容都放在你的问题中。查看所有字段会很有帮助。
在您的表单中,用户名和密码输入字段丢失以上是关于MariaDB 中的语法更新 id 失败的主要内容,如果未能解决你的问题,请参考以下文章
MariaDB/MySQL 中的 CREATE PROCEDURE 出现神秘错误