使用 IF-ELSE PHP MYSQL 插入或更新


INSERT or UPDATE using IF-ELSE 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)语句中犯了错误。 请帮助我该怎么办..提前致谢

问题是你的$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";

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

$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 />";
}
}