有没有办法优化单个查询的以下内容?
$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();
答案 0 :(得分:5)
您可以省略SELECT
和$num_rows
部分。
UPDATE
子句就足够了:根据你的谓词找到的记录(即WHERE
条件)将按照SET子句中的规定进行更新;如果没有找到记录,表/ relvar将是"原样是" (即不会进行更新。)
希望它有所帮助。
答案 1 :(得分:2)
您无需检查系统中是否存在用户名/电子邮件/金额。只需使用$ num_rows1来检测您是否更新了数据库中的记录 - 这将告诉您是否存在匹配。
但是,如果用户名,电子邮件和金额不足以确保唯一记录(即,您可能会匹配数据库中的多个记录),那么这将无效。在这种情况下,我建议的是找到一组字段,这些字段一起代表一个唯一的密钥,并确保您将这些字段作为更新的一部分进行检查。