2010-11-23 4 views
-1

mysqlにデータを挿入する必要があります。 Webから返された結果にmysqlが受け入れない文字(私は思う)を含んでいる可能性があるので、データベースのフィールドに挿入する前に入力や書式をチェックする必要があるかどうかわかりません。私はつぶやきをmysqlテーブルに挿入するのに問題があります。フィールドのタイプはvarcharです。これは、PHPスクリプトの挿入文です:WEBから取得したmysqlにデータを挿入できない

$json = $_POST['msg_top']; 
     $msg = json_decode($json); 
      foreach($msg->entry as $status) 
       { 
       $t = $status->content; 
       $query = "INSERT INTO msg2(id,msg,msg_id,depth) VALUES ('','$t','ID','3')"; 
       mysql_query($query); 
       if(!mysql_query($query, $dbh)) 
       {die('error:' .mysql_error());} 
       } 
+1

どのようなエラーが表示されますか?これはどこで失敗するのですか?これは基本的なデバッグを要求します –

+0

どのように私は基本的なデバッグを行うことができますか?私がテストしている問題は、jsスクリプトからポストによってデータを取得するときに、データベースの値が挿入されているかどうかをチェックすることです。しかし、私はエラーがPOSTされていないデータやこのファイルの問題が発生するかどうかを確認する方法を知りません。データがありませんこれを実行して問題があるかどうかを確認するだけです。 – XCeptable

+0

AJAXのリクエストであっても、好きな文字列を返すだけで、[console](http://ajaxian.com/archives/ajax-debugging-with-firebug)の[Firebug ](http://getfirebug.com/)Firefox用の拡張機能です。 – zanlok

答えて

1

はい、それはすべての値SQLコマンドでそれらを使用する前に、escapeにとって非常に重要です。また

$json = $_POST['msg_top']; 
$msg = json_decode($json); 
foreach($msg->entry as $status) { 
    $t = mysql_real_escape_string($status->content); 
    $query = "INSERT INTO msg2(id,msg,msg_id,depth) VALUES ('','$t','ID','3')"; 
    mysql_query($query); 
    if(!mysql_query($query, $dbh)) { 
     die('error:' .mysql_error()); 
    } 
} 

、クエリと他の可能性のある問題:

  1. idフィールドがauto_increment'ingされている場合は、フィールドまたは値のリストにそれを必要としません。
  2. 何か不足している可能性がありますが、なぜmsg_idフィールドに 'ID'という文字列を使用していますか?

このトラブルシューティングの助けとして、後で検査するためにすべての$クエリ文字列をログファイルに追加することをお勧めします。問題が容易にわからない場合は、手動でデータベース上でコマンドを実行してください(PhpMyAdminなど)。そこからエラーコードを確認してください。

関連する問題