0
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)语句中犯了错误..请帮助我该怎么办..提前谢谢

4

2 回答 2

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";
于 2012-04-11T13:54:47.563 回答
0

对于我设置为变量的解决方案 - 再次测试的 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 />";
}
}
于 2012-04-12T05:11:12.153 回答