在查询中输入数字

时间:2013-03-24 16:36:39

标签: php mysql

我已经坚持了一段时间,我确信这是一个简单的解决办法,但我找不到答案。

我正在尝试删除表中的一行,但是我正在查询的变量未被识别。在下面的$ remove查询中,如果我输入一个与行对应的数字,则查询工作正常,但是当我使用该变量时,它不会。

if (isset($_POST['remove']))
{

 $remove = $_POST['remove'];
 //echo $remove; print the number entered

 $query ="DELETE dogid FROM regdogs WHERE dogid = $remove ";
 if($query_run = mysql_query($query)){
 $query_num_rows = mysql_num_rows($query_run);

 if($query_num_rows==1)
      echo 'Entry removed ';
 else
      echo 'Not removed ';  
 }

由于

4 个答案:

答案 0 :(得分:7)

$query ="DELETE FROM regdogs WHERE dogid = $remove ";

试试这个。这只是一个语法错误。

再次,请转到 mysqli _ 方法。不推荐使用 mysql _ 方法。

答案 1 :(得分:1)

我希望这是一个可以接受的答案 - 因为您的问题是如何向查询添加参数,我觉得它是相关的。

如果只添加$remove $_POST['remove'],则允许用户执行任意SQL命令。想象一下有人发布了1 OR 1=1作为参数。您的SQL查询会说DELETE dogid FROM regdogs WHERE dogid = 1 OR 1=1并删除整个表。相反,在处理用户输入时始终使用mysql_real_escape_string。你的整个代码看起来像这样:

if (isset($_POST['remove']))
{

 $remove = mysql_real_escape_string($_POST['remove']);
 //echo $remove; print the number entered

 $query ="DELETE FROM regdogs WHERE dogid = $remove ";
 if($query_run = mysql_query($query)){
 $query_num_rows = mysql_num_rows($query_run);

 if($query_num_rows==1)
      echo 'Entry removed ';
 else
      echo 'Not removed ';  
 }

(当然,每个人都说mysql_ *已被弃用,这是绝对正确的。我假设你刚开始使用PHP。由于大多数教程仍然使用mysql_ *,现在绝对没问题。一旦你是更熟悉它,考虑切换到mysqli或PDO。)

答案 2 :(得分:0)

查询应修改为

DELETE FROM regdogs WHERE dogid = $remove

尝试打印查询

echo $query;

发布结果。

答案 3 :(得分:0)

我想你只需要这个:

 $query ="DELETE FROM regdogs WHERE dogid = $remove ";