2012-06-06 62 views
0

這個腳本根本不工作......任何人都可以告訴我我做錯了什麼?PHP腳本沒有更新mysql表

$id = $_POST['id']; 
$name = $_POST['name']; 
$date = $_POST['date']; 
$shortdesc = $_POST['shortdesc']; 
$link = $_POST['link']; 
$target = $_POST['target']; 
$sort = $_POST['sort']; 
$html = $_POST['html']; 

    include('appvars.php'); 

    $query = "UPDATE insight SET name='".$name."' AND SET date='". $date . "' AND SET html='" . $html . "' AND SET shortdesc='" . $shortdesc . "' AND SET link='" . $link . "' AND SET target='" . $target . "' AND SET sort='" . $sort . "' WHERE id='" . $id . "'"; 

    mysqli_query($dbc, $query); 
+1

放'回聲($查詢);'SQL查詢後看什麼正在通過 – codingbiz

+0

@tunmisefasipe,最基本的和必須做的事情:) +1 – Jashwant

+1

調用[mysqli_error](http://php.net/manual/en/mysqli.error.php)查詢後是否檢查返回任何錯誤。這是一個良好的做法,一般 – Anirudh

回答

5

你不是escaping你的值,所以你很容易受到SQL注入和構造無效語句的影響。例如,如果任何輸入字符串包含撇號,則可能導致代碼失敗。

看看prepared statements,這將使它更容易構建與parameters查詢。

在您的查詢中,您還需要使用逗號而不是AND SET

$query = "UPDATE insight SET name='foo', date='2012-12-10' WHERE id=42"; 

用於更新的語法是MySQL文檔中描述:

+0

現在不擔心這一點。不是公共表格,僅供我自己使用。 – user1427274

+3

@ user1427274轉義值不是關於安全;這是關於正確的解釋。安全恰好是一個副產品。 – Corbin

+0

如果我轉義值,我仍然可以插入html嗎? – user1427274

0

使用它像這樣,

$query = "UPDATE insight SET name='".$name."' ,date='". $date . "' ,html='" . $html . "' ,shortdesc='" . $shortdesc . "' ,link='" . $link . "' ,target='" . $target . "' ,sort='" . $sort . "' WHERE id='" . $id . "'"; 
+0

使用它,它將'name'設置爲0,而不是給定的「測試」和其餘的值沒有受到影響。 – user1427274

+0

這可能是由於您設置的列的數據類型。您應該將其設置爲**'text' **或**'varchar' **以接受非數字值。 – Stranger

0

它的工作...現在檢查

$id = $_POST['id']; 
    $name = $_POST['name']; 
    $date = $_POST['date']; 
    $shortdesc = $_POST['shortdesc']; 
    $link = $_POST['link']; 
    $target = $_POST['target']; 
    $sort = $_POST['sort']; 
    $html = $_POST['html']; 

     include('appvars.php'); 

     $query = "UPDATE insight SET name='".$name."' ,date='". $date . "' ,html='" . $html . "' ,shortdesc='" . $shortdesc . "' ,link='" . $link . "' ,target='" . $target . "' ,sort='" . $sort . "' WHERE id='" . $id . "'"; 



     mysqli_query($dbc, $query); 
0

我不是一個親在MySQL,但一試。

我猜id是一個整數。所以,不要引用它。

試試這個,

$query = "UPDATE insight SET name='".$name."' , date='". $date . "' , html='" . $html . "' , shortdesc='" . $shortdesc . "' , link='" . $link . "' , target='" . $target . "' , sort='" . $sort . "' WHERE id=". $id ; 
0

我認爲SQL語法不正確,你可以使用它像這樣:UPDATE tablename SET rowname = value , ....