2011-03-07 123 views
1

我不明白爲什麼我的MY_SQL插入不起作用。MYSQL插入不工作

<?php 
$sub = $_POST['submit']; 


if($sub) 
{ 

$title = $_COOKIE['newstitle']; 
$body = $_COOKIE['newsbody']; 
$sneak = $_COOKIE['newssneak']; 
$date = date("Y-d-m"); 
$postedby = $_COOKIE['userlogin']; 

$connect = mysql_connect("localhost","admin","00904684") or die("Couldn't Connect!"); 
mysql_select_db("dr") or die("Couldn't find DB."); 

$insert = mysql_query 
(" 
INSERT INTO news(`id`,`title`,`summary`,`body`,`date`,`postedby`) 
VALUES ('NULL','".$title."','".$sneak."','".$body."','".$date."','".$postedby."') 
"); 
mysql_close($connect); 



header('Location: ../index.php'); 


} 
else echo (mysql_error()); 

?> 

我的代碼中工作,直到我添加了一個新的費爾德「總結」了進去,至今還沒有工作,我知道的變量正確地傳遞雖然。

這裏是我的數據庫佈局:

ID |標題|總結| body |日期| postedby

+1

添加'if(!$ insert)echo mysql_error();'查看mySQL正在拋出什麼錯誤 – 2011-03-07 23:16:57

+3

您有什麼錯誤?如果我編輯我的'newstitle' cookie的值爲''OR 1 = 1;'''mysql_real_escape_string()'在本例中是你的朋友,或者PDO是一個更好的朋友:) – alex 2011-03-07 23:17:49

+0

1. * please *閱讀關於mysql_real_escape_string - 2.試着在查詢後立即回顯mysql_error(),看看你收到的錯誤並將它發佈在這裏謝謝 – Dre 2011-03-07 23:18:53

回答

3

你不允許有ID爲空,你可以試試這個,而不是

INSERT INTO news(`title`,`summary`,`body`,`date`,`postedby`) 
VALUES ('".$title."','".$sneak."','".$body."','".$date."','".$postedby."') 

通過從插入取出Id字段這將是有史以來默認就是無論是空或自動INC 。

2

你不是逃避你的輸入,這使得你可能對SQL注入開放 - 這可能是你的問題。我敢打賭,「摘要」在內容中有一個單引號,這打破了你的查詢。你應該這樣做:

$title = mysql_real_escape_string($_COOKIE['newstitle']); 
$body = mysql_real_escape_string($_COOKIE['newsbody']); 
$sneak = mysql_real_escape_string($_COOKIE['newssneak']); 
$date = date("Y-d-m"); 
$postedby = mysql_real_escape_string($_COOKIE['userlogin']); 
+0

這是個好消息,我看不到任何語法問題,所以這是一個不錯的選擇。 +1 – 2011-03-07 23:24:01

0

如果你實際上是想在ID字段中插入字符串'NULL',你應該沒問題。我懷疑你的意思是安裝NULL(注意不帶引號),意思是「沒有價值」。如果是這種情況,請刪除引號,或者@nhutto完全刪除列。

0

繼承人我的嘗試。

<?php 

if($sub) 
{ 
    $title  = mysql_real_escape_string($_COOKIE['newstitle']); 
    $body  = mysql_real_escape_string($_COOKIE['newsbody']); 
    $postedby = mysql_real_escape_string($_COOKIE['userlogin']); 
    $sneak  = mysql_real_escape_string($_COOKIE['newssneak']); 
    $date  = date('Y-d-m'); 

    $connect = mysql_connect('Localhost', 'admin', '00904684') or die('Could not connect to database.'); 
       mysql_select_db('dr') or die('Could not find database.'); 

    $insert = mysql_query('INSERT_INTO news(`title`, `summary`, `body`, `date`, `postedby`) 
             VALUES(\''. $title . '\', \''. $sneak . '\', \''. $body . '\', \''. $date . '\', \''. $postedby . '\')'); 
       mysql_close(); 

    header('Location: ../index.php'); 
} 
else { 
    echo mysql_error(); 
}