2013-07-31 25 views
-2
include "connect.php"; 

$deck = addslashes($_GET['deck']); 
$side = addslashes($_GET['side']); 
$type = addslashes($_GET['type']); 
$by = addslashes($_GET['creator']); 
$name = addslashes($_GET['name']); 

$table = "deck"; 

$result = mysql_query("SELECT * FROM $table WHERE name = '$name' AND by = '$by'"); 
if(!$result){ 
    $query2 = "INSERT INTO $table (deck, side, name, type, by) VALUES ('$deck', '$side', '$name', '$type', '$by')"; 
    $result2 = mysql_query($query2); 
} 

插入到永遠不會被插入,我的數據庫就像爲什麼這個SELECT * FROM數據庫不會工作?

id int(11) autoincrement 
deck varchar(900) 
side varchar(900) 
type varchar(900) 
by varchar(900) 
name varchar(900) 
+3

您是否嘗試過檢查錯誤? 'mysql_error()'是你的朋友。瞭解它 – Anigel

+9

**警告:**不要使用'addslashes()'來逃避你的字符串;它是不夠的,會給你帶來安全漏洞。改用'mysql_real_escape_string()'。更好的是,完全停止使用過時的mysql_xxx()函數,並切換到更好的DP API,如[PDO](http://php.net/manual/en/book.pdo.php),這將允許您使用參數化查詢等現代技術。 – Spudley

+0

如果記錄已經存在,那麼在您的代碼假定時不會使SELECT查詢崩潰。 –

回答

1

通過保留關鍵字。

使用這樣

$result = mysql_query("SELECT * FROM $table WHERE name = '$name' AND `by` = '$by'"); 
+0

如果您在查詢後實際檢查錯誤,您應該知道這是問題。函數offere返回代碼的原因,如果他們返回失敗的東西,檢查他們的工作 – Anigel