【问题标题】:php mysql insert query having troublephp mysql插入查询有问题
【发布时间】:2016-01-28 11:38:53
【问题描述】:

如果我使用 where 子句,我有一个不插入的查询,如果没有 where 子句,它会插入数据。这很奇怪,我以前从未在 WAMP 中看到过这种情况

$key=substr(md5(rand(0, 1000000)), 0, 5);

$key1="INSERT INTO login(key_id) VALUES('$key') 
WHERE (email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')"

if(mysql_query($key1))  
{
   $message = 'User Added!.';
   echo "<SCRIPT>
   alert('$message');
   location='forgotpassword.php';
   </SCRIPT>";     
}

如果我回显$_POST['email_id'],它确实会返回有效结果

【问题讨论】:

  • 我认为你需要update查询而不是insert!!
  • 您不能INSERTan 现有行(WHERE 尝试选择现有行)
  • 感谢 saty 和 ubercoder。我什至不知道我是怎么忘记的。我需要使用 update 来更新现有行 .. urrgghhhh 在这段简单的代码中度过了一整天 |
  • 另外,既然没人提到,我会的。停止使用 mysql_* 扩展,因为它自 PHP 5.5.0 起已弃用,自 PHP 7.0 起已删除,而是使用 mysqliPDO 并且您的代码对 SQL-injections 使用准备好的语句开放。跨度>

标签: php mysql insert


【解决方案1】:

INSERT 和 WHERE 不能混用。 插入时,您正在创建一条新记录。 WHERE 与 SELECTing DELETEing 或 UPDATEing 一起使用,当您必须指定一个过滤器时,您想要 SELECT、DELETE 或 UPDATE 哪些行。

如果你想插入一行,不要使用 WHERE。 如果要更改行,请使用

$key1="UPDATE login SET key_id = '$key' WHERE
 (email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";

【讨论】:

  • 也就是说,应该注意 mysql_functions 已被弃用,并且在 PHP7 中已删除 - 您应该改用 mysqli_ 或 PDO
  • 弗兰兹,感谢您的更新。我真的很笨。我需要上面 saty 提到的更新查询,也需要你插入和不一起去的地方。我有一个问题,如果 php 更新到 7,我的代码会停止工作吗?
  • 所有 mysql_ 函数在 PHP7 中都被删除了,所以:是的。但是 mysqli_ 提供了 mysql_ 所做的一切以及更多功能,而 PDO 提供了一个非常强大的抽象层,您可以通过它对 mysql、pgsql、mssql、CSV 文件和许多许多其他文件使用相同的功能。
  • @ABI:如果它的工作比请接受这个答案。这将对面临同样问题的其他人有所帮助。干得好弗兰兹...
【解决方案2】:

Insert 仅用于创建新记录,where 子句仅用于设置与selectupdatedelete 等一起使用的任何条件。

试试这个会有帮助:-

  $key1="update login set key_id ='$key' WHERE 
           (email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";

【讨论】:

  • 猜你忘了用更新替换插入? [编辑答案后评论已过时]
【解决方案3】:

我知道@Franz-Gleichmann 已经解释得很好,你的代码有什么问题。

更新数据修改代码需要使用UPDATE

$key1 = "UPDATE login SET key_id = '$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";

现在我再补充两点:

  • 请使用mysqli_*PDO,因为mysql_* 已弃用且在PHP 7 中不可用。
  • 您错过了同一行的终止分号,我希望这是拼写错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多