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);

これにより、結果の最初の行から 2 番目の列が返されます (これは,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 とテストする日付です。必要に応じて編集されていますが、基本的にスクリプトは変数に設定されています(フォームなどから取得するために更新できます)。次に、必要な nic と日付の配列を返す最初の mysql クエリを作成します。返された値を取得するには、ループ内のループが必要です。値 (およびキー) は独自の配列に格納され、事前に決定された変数を使用して検索し、挿入/更新が成功したかどうかが通知されます。明らかに仕事が必要ですが、仕事を成し遂げます。

$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 に答える