Mysqli DELETE不使用变量

时间:2013-06-22 20:04:39

标签: php mysqli

我会直接跳进去。使用php如果我使用变量作为值,我在从数据库中删除记录时遇到问题。下面的代码行完美无缺

mysqli_query($con,"DELETE FROM highScores WHERE Name='David'");

但是用户名会改变,因此我需要将其声明为变量。我尝试了各种各样的变化,但似乎没有任何效果。我最近的失败尝试是下面的代码,这是我在插入时声明变量的方式。

mysqli_query($con,"DELETE FROM highScores WHERE Name='{$name}'");

4 个答案:

答案 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)

我在搜索同一问题的解决方案时登陆这里,但刚发现我的数据库用户没有删除权限。出于安全原因,我之前删除了此权限。