嗨,我正在尝试使用Angularjs插入和更新函数中的查询,并以JSON对象的形式返回数据。在这个查询中,我比较年份和电子邮件。如果没有本年度的数据和电子邮件,则应插入数据,否则应更新数据。但是,当我试图在写入这两种条件(Insert和Update)时没有插入数据时。如果我只写了insert查询,它就会接受。
function addrentalproperty($data)
{
$rentalannualrent = $data->rentalProperty->rentalannualrent;
$rentalblock = $data->rentalProperty->rentalblock;
$rentalstreet = $data->rentalProperty->rentalstreet;
$rentalarea = $data->rentalProperty->rentalarea;
$rentaltown = $data->rentalProperty->rentalcity;
$rentalstate = $data->rentalProperty->rentalstate;
$rentalpincode = $data->rentalProperty->rentalpincode;
session_start();
$userInfo = $_SESSION['USER'];
$userEmailid = $userInfo->getEmailid();
if ($rentalannualrent != '' && $rentalblock != '' && $rentalstreet != '' && $rentalarea != '' && $rentaltown != '' && $rentalstate != '' && $rentalpincode != '') {
$query = mysql_query("UPDATE rental_details SET
rental_annual_rent = '$rentalannualrent',
rental_block = '$rentalblock',
rental_street = '$rentalstreet',
rental_area = '$rentalarea',
rental_town = '$rentaltown',
rental_state = '$rentalstate',
rental_pincode = '$rentalpincode',
WHERE email ='$userEmailid' AND currentyear=NOW()");
} else {
$query = mysql_query("INSERT INTO rental_details(email,rental_annual_rent,rental_block,rental_street,rental_area,rental_town,rental_state,rental_pincode,rental_ownership,currentyear)
values('$userEmailid','$rentalannualrent','$rentalblock','$rentalstreet','$rentalarea','$rentaltown','$rentalstate','$rentalpincode','$rentalownership',NOW())");
}
if ($query) {
$successJson = '{"success":"Rental Property Details Added Successfully."}';
print_r($successJson);
} else {
$failureJson = '{"error":"Problem While Saving Property Details."}';
print_r($successJson);
}
}发布于 2016-03-02 07:23:21
问题是,NOW()将提供当前日期和时间,而不提供年份。
但是,您正在使用NOW()在更新查询中对照当前年份进行检查。
如果您插入年份并试图通过检查当前时间进行更新,这可能是一个问题。
另一件事是,如果在当前年份字段中插入当前时间,则更新查询将永远无法工作。
您应该使用YEAR(CURDATE())来获得当前年份。
使用下面的查询和检查。
$query=mysql_query("UPDATE rental_details SET
rental_annual_rent = '$rentalannualrent',
rental_block = '$rentalblock',
rental_street = '$rentalstreet',
rental_area = '$rentalarea',
rental_town = '$rentaltown',
rental_state = '$rentalstate',
rental_pincode = '$rentalpincode',
WHERE email ='$userEmailid' AND currentyear=YEAR(CURDATE())"); 编辑1 :
它不会插入。由于以下情况,
if($rentalannualrent!='' &&$rentalblock!='' &&$rentalstreet!='' &&$rentalarea!='' &&$rentaltown!='' &&$rentalstate!='' &&$rentalpincode!='')
{插入查询需要所有这些值。显然,所有的变量都应该是很好的设置,并且应该有一些值。
如果所有这些变量都有任何数据,则将始终转到UPDATE部分。您的插入查询将永远不会被执行。
理想情况下,数据库中没有数据。因此,更新也将不起作用。
所以,检查你的状况并改变逻辑。
编辑2 :
$userEmailid= $userInfo-> getEmailid();
$result=mysql_query("SELECT * FROM rental_details WHERE email ='$userEmailid' AND currentyear=YEAR(CURDATE())";
$records = mysql_num_rows($result);
if($records > 0) {
// UPDATE query
} else {
// INSERT query
}PS:不要使用Mysql__。这是不可取的。请切换到mysqli__ (或) PDO。
https://stackoverflow.com/questions/35740698
复制相似问题