您好,我正在尝试使用 Angularjs 在函数中插入和更新查询,并以 JSON 对象的形式返回数据。在此查询中,我正在比较年份和电子邮件。如果没有当年和电子邮件的数据,则应插入数据,否则应更新数据。但是当我尝试写入两个条件(插入和更新)时数据没有插入时。如果我只写插入查询,它正在接受。
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);
}
}
最佳答案
问题是,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 部分。您的 INSERT 查询将永远不会执行。
理想情况下数据库中没有数据。因此,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。
关于javascript - 如何在angularjs中插入和更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35740698/