2012-04-11 115 views
0
DONOR 
donor-nic----username-----status 
111----------ali----------available 
222---------usman--------notavailable 

另一個是INSERT或UPDATE使用IF-ELSE PHP MYSQL

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語句)statment .. plz幫助我該怎麼辦..提前

感謝
+0

「沒有工作」是_never_足夠的問題描述。您是否嘗試過使用調試器來遍歷代碼? – 2012-04-11 13:52:33

+0

不..我知道關於「調試器」..我的查詢正確運行在phpmyadmin但是當我運行我的頁面它總是返回「更新」..即使我輸入新的日期 – maham 2012-04-11 13:55:43

回答

1

問題是您的$res變量是結果集對象而不是字符串或日期值。你還在哪裏定義了$date

如果你想從您的查詢個人的結果,使用方法:

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

這會從你的結果的第一行返回第二個欄,(這正是,0,1定義作爲參數傳遞給mysql_result函數),我認爲這是你正在尋找的日期。

檢查該文檔爲mysql_result:

的mysql_query總是返回一個數組,而不是一個特定的值。假設您的$date varialble格式正確,上述內容應該可以工作。

編輯

而且你需要更改定義$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"; 
+0

$ sql =選擇don.donor_nic,捐贈。lastdonationdate FROM施主 JOIN捐贈ON donor.donor_nic = donation.donor_nic WHERE用戶名= '阿里' GROUP BY donation.lastdonationdate $解析度=的mysql_query($ SQL,$ CON);如果($ res == $ date) { echo「update」; } else { echo「insert」; } – maham 2012-04-11 14:01:49

+0

我把$ res = mysql_result(mysql_query($ sql,$ con),0,1);但它再次返回「更新」,即使我輸入新的日期,,我已經聲明變量日期... $ date = $ _REQUEST ['lastdonationdate']::( – maham 2012-04-11 14:03:39

+0

你應該調試你的代碼,把'echo $ res。' - '。$ date;'在'$ res = mysql_result(mysql_query($ sql,$ con),0,1)之後的行'';並且它會顯示你正在比較的兩個值。看看你是否從服務器獲得了正確的數據 – 2012-04-11 14:13:13

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