2

JSON データをループし、その内容を MySQL に挿入する foreach ステートメントがあります。$author 文字列に特定のユーザー名が表示されている場合、挿入をスキップしたい。以下の方法は大丈夫ですか、それともデータベースレベルで処理する方が良いですか?

foreach ($response['data'] as $data) {      
        $id = $data['id'];
        $created_time = $data['created_time'];
        $thumbnail = $data['images']['low_resolution']['url'];
        $author = $data['user']['username'];
        $caption = mysql_real_escape_string($data['caption']['text']);
        $link = $data['link'];
        $likes = $data['likes']['count'];

        if ($author == 'USERNAME') {
            mysql_close($con);
        } else {

        $query = "INSERT IGNORE INTO pbr (id, created_time, thumbnail, author, caption, link, likes, hash) VALUES ('$id', '$created_time', '$thumbnail', '$author', '$caption', '$link', '$likes', '$hash')";
        $result = mysql_query($query) or die(mysql_error());        

    mysql_close($con);
        }
    }
4

1 に答える 1

3

ループの反復ごとに SQL 接続を閉じるのはなぜですか?

なぜ単純にしないのですか:

if ($author == 'USERNAME')
  continue; // next iteration

$query = "INSERT IGNORE INTO pbr (id, created_time, thumbnail, author, caption, link, likes, hash)
  VALUES ('$id', '$created_time', '$thumbnail', '$author', '$caption', '$link', '$likes', '$hash')";
$result = mysql_query($query) or die(mysql_error());

ところで、パラメーターをクエリにバインドするか、少なくともmysql_real_escape_string()を使用する必要があります。そうしないと、引用符を含む値で問題が発生します(現在、変数$captionに対してのみ実行します。 $link$thumbnail$usernameには単一の値を含めることができると思います)引用も)。

于 2012-09-17T19:33:27.613 に答える