2012-01-25 39 views
-1

整個MySQL錯誤消息我試着這樣做:不接收使用模具(mysql_error)

<?php 
    if(isset($_POST['update']) && isset($_GET['topic_id'])) 
    { 
     $title=$_POST['title']; 
     $tag_h1=$_POST['tag_h1']; 
     $tag_h2=$_POST['tag_h2']; 
     $tag_metadata=$_POST['tag_metadata']; 
     $content=$_POST['content']; 
     $topic_id=$_GET['topic_id']; 


    mysql_query(" 
    UPDATE topic 
    SET tag_h1=$tag_h1,tag_h2=$tag_h2,tag_metadata=$tag_metadata,content=$content,title=$title 
    WHERE topic_id=$topic_id 
    ") or die(mysql_error); 

    echo "$title<br/>"; 
    echo "$tag_h1<br/>"; 
    echo "$tag_h2<br/>"; 
    echo "$tag_metadata<br/>"; 
    echo "$content<br/>"; 
    } 

?> 

但我鉻得到錯誤100,並出現沒有在Firefox

+1

什麼是實際的錯誤消息與它? – Oldskool

+0

它沒有任何東西.. php什麼都不做..什麼使得在PHP編程如此困難 –

+1

你的代碼也是乞求注入攻擊。在將它傳遞到數據庫之前,您應該避開您的輸入! –

回答

4

您的查詢失敗,因爲沒有輸入的值由引號:

mysql_query(" 
UPDATE topic 
/* Enclose all variables in single quotes (unless they are integer values) */ 
SET tag_h1='$tag_h1',tag_h2='$tag_h2',tag_metadata='$tag_metadata',content='$content',title='$title' 
WHERE topic_id='$topic_id' 
") or die(mysql_error()); 
//-------------------^^^^ 
//() needed here. 

注1:mysql_error()是一個必須與()調用的函數。這就是爲什麼你看不到打印錯誤的原因。

注2,此腳本廣泛開放給SQL注入攻擊。過濾所有$_POST值與mysql_real_escape_string()

$title = mysql_real_escape_string($_POST['title']); 
    $tag_h1 = mysql_real_escape_string($_POST['tag_h1']); 
    $tag_h2 = mysql_real_escape_string($_POST['tag_h2']); 
    $tag_metadata = mysql_real_escape_string($_POST['tag_metadata']); 
    $content = mysql_real_escape_string($_POST['content']); 
    $topic_id = mysql_real_escape_string($_GET['topic_id']); 
+0

不,這是不錯的邁克,這是一個管理頁面..不是用戶頁面 –

+0

它仍然會拋出該錯誤 –

+2

@DmitryMakovetskiyd不,即使用於內部目的,它是永遠不會好的。即使您不擔心惡意篡改,例如,如果輸入值包含「」字符,查詢仍然會中斷。你必須逃避它們。 –