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帮助我该怎么做.. 提前谢谢
答案 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 />";
}
}