1

元の投稿:

スクリプトが機能していません (データを記録していません)。mysql_real_escape_string を追加する前は機能していたので、正しく実装していないのではないかと思っています。

$array = json_decode($downstream,TRUE);
$name = $array["status"]["name"];
$title = $array["status"]["title"];
$table = "mrTable";
$insert = "INSERT INTO $table (name, title) VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string($title)."')";

INSERT でのその実装は正しいように見えますか?

アップデート:

これがコード全体です。これが役立つことを願っています。それでもまだ機能していません。real_escape_string 関数を使用すると、データ要素はデータベースに記録されません。エスケープ関数を削除するとすぐに、データが正常に書き込まれます (もちろん、アポストロフィが表示されない限り)。

どうぞ:

//read contents of this file:

$json_data = file_get_contents('../list.txt');

//json to a php array

$array = json_decode($json_data,TRUE));

//store in mysql table

$table = "table1";
$name = mysql_real_escape_string($array["current"]["name"]);
$code = mysql_real_escape_string($array["current"]["code"]);

$insert="INSERT INTO $table (name, code) VALUES ('$name', '$code')";

$con = mysql_connect($db, $user, $pass);
if (!$con)
    {
    die ('Could not connect: ' . mysql_error());
    };

mysql_select_db($yup, $con);

mysql_query($insert) OR die(mysql_error());

mysql_close($con);

更新 2

修理済み!最初に mysql_real_escape_string に言及する前に、データベースに接続する必要があります。すべてが機能しています...空のデータはありません。

4

3 に答える 3

1

mysql_real_escape_string を使用するには、データベースに接続する必要があります。あなたはそうではないようです。mysql_connect が、定義した行の上にあることを確認してください$insert

于 2012-08-03T20:38:18.363 に答える
0

値をクエリ文字列に直接挿入しないでください。たとえ逃げられたとしても、それは賢明な考えではありません。代わりに、「OR 1 = 1-- 役に立たない」などの攻撃をレンダリングする、パラメータ化されたステートメントをそのまま使用します。パラメータ化されたステートメントの値をエスケープする必要もありません...

PREPARE statement FROM
'INSERT INTO table (col1, col2)
 VALUES
 (?, ?)'

EXECUTE statement USING ('val1', 'val2')

DEALLOCATE statement

完了したときにのみ割り当てを解除します。異なる値で何度でも再実行できます。とにかく再実行する場合は、この方法で実行することでパフォーマンスも向上します! (ステートメントは無限回の実行に対して 1 回だけ準備されるためです。) このメソッドを実装し、それでも問題が解決しない場合は戻ってくることをお勧めします。

于 2012-08-03T20:45:46.797 に答える
-1

パラメータをエスケープしようとしないでください。バインド変数を使用します。例については、 http://bobby-tables.com/php.htmlを参照してください。

于 2012-08-03T21:53:39.073 に答える