我正在通過PHP,JavaScript製作一個小型的電子郵件應用程序,並使其工作的大部分。當我試圖設置查詢來獲取被刪除併發送到垃圾箱的電子郵件時,我迷失方向。當我直接查詢數據庫時,我寫的查詢似乎工作正常,但從PHP運行時失敗。請幫助我解決這個令人沮喪的問題,任何幫助將不勝感激。PHP的MySQL查詢臨時表不能正常工作
我的電子郵件表結構如下。
TABLE messages (
'mid' int,
'folderfrom' int, //where message is stored for the user who sent it
'msgfrom' text, //user sending message
'msgto' text, //user getting message
'subject' text,
'msgdate' timestamp,
'msg' text,
'folderto' int, //where message is stored for recieving user.
)
以下是我用於構建和執行查詢的代碼。我試過在一行中運行最後一個條件,但它不起作用。
if ($foldernum == 1) {
$querytorun = "SELECT ms.mid as 'id', ms.folderto as 'folder', ms.msgfrom as 'name', ms.msgto as 'email', ms.subject as 'subject', ms.msgdate as 'date', ms.msg as 'msg' FROM messages as ms WHERE ms.msgto LIKE '{$usercode}' AND ms.folderto = {$foldernum}";
} elseif ($foldernum == 2) {
$querytorun = "SELECT ms.mid as 'id', ms.folderfrom as 'folder', ms.msgfrom as 'name', ms.msgfrom as 'email', ms.subject as 'subject', ms.msgdate as 'date', ms.msg as 'msg' FROM messages as ms WHERE ms.msgfrom LIKE '{$usercode}' AND ms.folderfrom = {$foldernum}";
} else {
$querytorun = "CREATE TEMPORARY TABLE tempfolder('id' int,'folder' int, 'name' text,'email' text,'subject' text,'date' datetime,'msg' text)";
$res = mysql_query($querytorun);
$querytorun = "INSERT INTO tempfolder SELECT mst.mid as 'id', mst.folderto as 'folder', mst.msgfrom as 'name', mst.msgto as 'email', mst.subject as 'subject', mst.msgdate as 'date', mst.msg as 'msg' FROM messages as mst WHERE mst.msgto LIKE '{$usercode}' AND mst.folderto = {$foldernum}";
$res = mysql_query($querytorun);
$querytorun = "INSERT INTO tempfolder SELECT mst.mid as 'id', mst.folderfrom as 'folder', mst.msgto as 'name', mst.msgfrom as 'email', mst.subject as 'subject', mst.msgdate as 'date', mst.msg as 'msg' FROM messages as mst WHERE mst.msgfrom LIKE '{$usercode}' AND mst.folderfrom = {$foldernum}";
$res = mysql_query($querytorun);
$querytorun = "SELECT * FROM tempfolder";
}
$res = mysql_query($querytorun);
while($rs = mysql_fetch_object($res)) {
$arr[] = $rs;
}
echo json_encode($arr);
嘗試使用['mysql_error()'](http://php.net/manual/en/function.mysql-error.php);另外,你爲什麼不使用mysqli?更好的是,爲什麼不使用PDO? – 2014-10-22 00:51:08
我對PHP非常陌生,這是我的第一個項目。更習慣於nodejs。我正在研究PDO。 – 2014-10-22 01:37:23
在這種情況下,這裏有一些提示:使用PHP 5.4或更高版本(或者如果您必須,5.3.7+);不要存儲密碼,即使你加密它們(使用散列);使用XAMPP,Sublime Text和Filezilla;學習和使用Git/Github(非常重要);在你做某事之前,檢查是否有其他人已經做到了; Apache或Nginx無關緊要;面向對象是重要的;使用大量的代碼註釋! PSR-4 FTW;在查看功能時閱讀php.net的評論。 – 2014-10-22 01:55:43