2012-01-25 3 views
-1

を受信して​​いません:私はこれを行うにしようとダイ(mysql_error)を使用して、全体のMySQLエラーメッセージ

<?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いいえ、内部目的で使用されても大丈夫ではありません。悪意のある改ざんを心配することはないかもしれませんが、入力値に ''などの文字が含まれていると、クエリは引き続き破損します。あなたはそれらをエスケープする必要があります。 –

関連する問題