Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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 支持在单个查询中实现功能_Php_Mysql_Mysqli - Fatal编程技术网

Php 支持在单个查询中实现功能

Php 支持在单个查询中实现功能,php,mysql,mysqli,Php,Mysql,Mysqli,有没有一种方法可以将以下内容优化为单个查询 $username=sanitize($_POST['username']); $sql="SELECT * FROM $tbl_name WHERE username='$username' AND email='$email' AND amount='$donation_amount'"; $result=mysql_query($sql); $num_rows = mysql_num_rows($result); if($num_rows==1

有没有一种方法可以将以下内容优化为单个查询

$username=sanitize($_POST['username']);
$sql="SELECT * FROM $tbl_name WHERE username='$username' AND email='$email' AND amount='$donation_amount'";
$result=mysql_query($sql);
$num_rows = mysql_num_rows($result);

if($num_rows==1){
$sql1="UPDATE $tbl_name SET password='$new_password' WHERE username='$username' AND email='$email' AND amount='$donation_amount'";
$result1=mysql_query($sql1);
$num_rows1=mysql_affected_rows();

您可以省略
选择
$num\u行
部分

UPDATE
子句就足够了:根据谓词(即
WHERE
条件)找到的记录将按照SET子句中的指定进行更新;如果未找到任何记录,则表/relvar将保持“原样”(即,不会进行更新)


希望有帮助。

您无需检查系统中是否存在用户名/电子邮件/金额。只需使用$num_rows1来检测您是否更新了数据库中的记录-这将告诉您是否存在匹配项


但是,如果用户名、电子邮件和金额不足以确保记录的唯一性(即,您可能会匹配数据库中的多个记录),则这将不起作用。在这种情况下,我建议您找到一组字段,这些字段一起表示一个唯一的键,并确保您在更新时检查这些字段。

您是对的,我首先误解了这个问题。你的答案是:)谢谢你的理解。。没关系。。我以前也是这样:)