Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql插入查询遇到问题_Php_Mysql_Insert - Fatal编程技术网

php mysql插入查询遇到问题

php mysql插入查询遇到问题,php,mysql,insert,Php,Mysql,Insert,我有一个查询,如果我使用where子句,它不会插入数据,如果没有where子句,它会插入数据。这很奇怪,我以前从未在WAMP见过这种情况 $key=substr(md5(rand(010000)),0,5) $key1=“插入登录(key\u id)值(“$key”) 其中(email\u id=“.mysql\u real\u escape\u string($\u POST['email\u id'])。”)” if(mysql_查询($key1)) { $message='用户已添加!';

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

$key=substr(md5(rand(010000)),0,5)

$key1=“插入登录(key\u id)值(“$key”)
其中(email\u id=“.mysql\u real\u escape\u string($\u POST['email\u id'])。”)”
if(mysql_查询($key1))
{
$message='用户已添加!';
回声“
警报(“$message”);
location='forgotpassword.php';
";     
}

如果我回显
$\u POST['email\u id']
它会返回有效的结果

插入和不混合的位置。 插入时,您正在创建新记录。 当您必须指定要选择、删除或更新的行的筛选器时,WHERE用于选择删除或更新

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

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

Insert
仅用于创建新记录,而
where
子句仅在希望设置与之一起使用的任何条件时使用,如
选择
更新
删除

试试这个,它会有帮助:-

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

我知道@Franz Gleichmann已经解释得很清楚了,你的代码有什么错

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

$key1 = "UPDATE login SET key_id = '$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";
现在我再补充两点:

  • 请使用
    mysqli_*
    PDO
    ,因为
    mysql_*
    已弃用,在PHP7中不可用
  • 你错过了同一行的分号,我希望这是打字错误

我认为您需要
更新
查询,而不是
插入
!!由于saty和ubercoder,您无法插入现有行(其中,
尝试选择现有行)。我甚至不知道我怎么会忘了这个。我需要使用update来更新现有行。。Urrgghhh在这段简单的代码中度过了整整一天|也因为没有人提到它,我会的。停止使用mysql_*扩展,因为它在PHP版本5.5.0中已被弃用,并且在PHP版本7.0中已被删除。请改用或,并且您的代码可以使用准备好的语句。也就是说,应该注意,mysql_*函数已被弃用,并且在PHP7中已被删除-您应该切换到mysqli_*或PDO而不是PDEADFRANZ,感谢更新。我真的很笨。我需要上面saty提到的更新查询,也需要你的insert和where Not go。我有一个问题,如果php被更新到7,我的代码会停止编写吗?所有mysql_uu函数都会在PHP7中删除,所以:是的。但是mysqli_uuu提供了mysql_uuuu所做的一切和更多,而PDO提供了一个非常强大的抽象层,通过它,您可以对mysql、pgsql、mssql、CSV文件和许多、许多、更多的文件使用相同的函数。@ABI:如果它比mysql更有效,请接受这个答案。这将有助于其他面临同样问题的人。干得好Franz…我猜你忘了用更新替换插入?[在编辑答案后,注释已过时]
$key1 = "UPDATE login SET key_id = '$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";