使用IF-ELSE php MYSQL进行INSERT或UPDATE

时间:2012-04-11 13:50:28

标签: php mysql

DONOR
donor-nic----username-----status
111----------ali----------available
222---------usman--------notavailable

另一个是

DONATION
donation_id------donor_nic-----date---
1----------------111----------2012/03/04
2---------------111-----------2012/06/07
3----------------111---------2012/07/08
4----------------222---------2012/03/03

现在我想更新日期,如果它已经退出,对应于donor_nic 如果日期不存在,我想插入新的日期,。

我正在使用此查询根据相应的donor_nic

获取所有日期
SELECT donor.donor_nic, donation.lastdonationdate
FROM donor
JOIN donation ON donor.donor_nic = donation.donor_nic
WHERE username = 'ali'
GROUP BY donation.lastdonationdate

现在这个查询适用于phpmyadmin ..但是当我在我的页面中使用它时...它与日期不匹配..我正在匹配这样的日期

   $sql= SELECT donor.donor_nic, donation.lastdonationdate
    FROM donor
    JOIN donation ON donor.donor_nic = donation.donor_nic
    WHERE username = 'ali'
    GROUP BY donation.lastdonationdate

$res=mysql_query($sql, $con);

if($res == $date)
{
echo "update";
}
else
{
echo "insert";
}

但是这件事没有用..可能是我在条件(if-else)的判断中犯了错误.PLZ帮助我该怎么做.. 提前谢谢

2 个答案:

答案 0 :(得分:1)

问题是您的$res变量是结果集对象,而不是字符串或日期值。您还在哪里定义$date

如果您想从查询中获得单个结果,请使用:

$res=mysql_result(mysql_query($sql, $con),0,1);

这将返回结果第一行的第二列(即,0,1定义为mysql_result函数的参数),我认为这是您要查找的日期。

检查mysql_result的文档:http://php.net/manual/en/function.mysql-result.php

mysql_query总是返回一个数组,而不是一个特定的值。假设您的$date变量格式正确,则上述内容应该有效。

修改

此外,您需要更改定义$SQL的方式,在其周围加上引号,如下所示:

$sql= "SELECT donor.donor_nic, donation.lastdonationdate
    FROM donor
    JOIN donation ON donor.donor_nic = donation.donor_nic
    WHERE username = 'ali'
    GROUP BY donation.lastdonationdate";

答案 1 :(得分:0)

对于我已设置变量的解决方案 - 要再次测试的nic和要测试的日期,设置在脚本的顶部。 已经编辑了我认为需要但基本上脚本设置为变量(您可以更新以通过表单或其他任何方式检索)。 然后构建第一个mysql查询,它将返回所需的nic和date的数组。 需要循环内的循环来获取返回的值。 值(和键)存储在自己的数组中,然后我们使用预先确定的变量进行搜索,并告知您插入/更新是否成功。 显然需要工作,但完成工作。

$nic = "111";
$date2add = "14/12/13";

$sql="SELECT donor.donor-nic, donation.date
FROM donor
JOIN donation ON donor.donor-nic = donation.donor-nic
WHERE username = 'ali'
GROUP BY donation.date";

$res=mysqli_query($mysqli, $sql);

//may need error checking here to verify that $res has data.
$row = mysqli_fetch_array($res, MYSQLI_ASSOC);

//initiate a loop to select values
while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
    //initiate a loop to store values into an array so that we can compare against later.
foreach ($row as $keys => $val) {
    echo "<br />$keys...$val<br />";
    $keysar[] = $keys;
    $valsar[] = $val;
}
}


 //using values above we will search the $valsar (created in the above loop) for $date2add (the date req. to be searched against)
if (in_array($date2add, $valsar) == $date2add) {
$sql = "UPDATE donation SET date = '$date2add' WHERE nic='$nic'";
$res = mysqli_query($mysqli, $sql) or trigger_error("Query: $sql\n<br />MySQL   Error: " . mysqli_error($mysqli));
if ($res) {
    echo "Record  updated correctly<br />";
} else {
    echo "failed  to update<br />";
}
} else {
  //these variables will have to set from somewhere if the script will insert correctly.
$sql = 'INSERT INTO donation ("$donation_id", "$nic", "$date")';
$res = mysqli_query($mysqli, $sql);
if (mysqli_affected_rows($mysqli) == 1) {
    echo "it inserted correctly<br />";
} else {
    echo "failed  to insert<br />";
}
}