我会直接跳进去。使用php如果我使用变量作为值,我在从数据库中删除记录时遇到问题。下面的代码行完美无缺
mysqli_query($con,"DELETE FROM highScores WHERE Name='David'");
但是用户名会改变,因此我需要将其声明为变量。我尝试了各种各样的变化,但似乎没有任何效果。我最近的失败尝试是下面的代码,这是我在插入时声明变量的方式。
mysqli_query($con,"DELETE FROM highScores WHERE Name='{$name}'");
答案 0 :(得分:3)
在这种情况下,检查变量实际上是否包含您期望的内容是件好事。我发现回显整个查询字符串是查找查询无效的好方法。
$sqlquery = "DELETE FROM highScores WHERE Name='{$name}'";
// have a look at the query...
echo "<pre>$sqlquery</pre>";
// use it...
mysqli_query($conn,$sqlquery);
我应该警告你,如果$ name来自某个不受信任的地方,例如可公开查看的html表单,那么在查询中使用它之前需要将其设置为“安全”。查看“prepared statements”。一旦您知道您的代码正确填充了您的变量,请确保在将其放入查询之前使其安全。
答案 1 :(得分:0)
尝试使其运行:
mysqli_query($con,"DELETE FROM highScores WHERE Name='".$name."'");
确保$name
是一个正确形成的字符串,如string(5) David
,否则可能无法获得所需的结果,甚至可能完全破坏您的查询。如果您放置mysqli_real_escape_string
这样的
$name = mysqli_real_escape_string($con,$name);
执行查询之前
答案 2 :(得分:0)
我不确定.. {$ variable}在查询中有效。
我将变量插入查询的方式称为浓度。
mysqli_query($con,"DELETE FROM highScores WHERE Name='" . $name . "'");
这段时间将2个字符串加在一起。
但是,您尝试做的事情很容易受到SQL注入攻击。如果我是你,我会小心$ name里面的内容。
编辑:我的错误,我已经习惯了为我插入引号的课程。
答案 3 :(得分:0)
我在搜索同一问题的解决方案时登陆这里,但刚发现我的数据库用户没有删除权限。出于安全原因,我之前删除了此权限。