在查询中输入数字


entering a number into a query

我已经在这个问题上停留了一段时间,我确信这是一个简单的解决方案,但我就是找不到答案。

我试图删除表中的一行,但我放入查询的变量未被识别。在下面的$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 ';  
 }

谢谢

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

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

请再次移动到mysqli_ methods。mysql_方法已弃用。

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

如果您只添加$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。

查询应该修改为

DELETE FROM regdogs WHERE dogid = $remove

try printing query

echo $query;

我想你只是需要这个:

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