mysql_*
私はあなたの質問の適切な複製を見つけようとしましたが、古代の機能に基づいた本物の複製しか見つかりませんでした。(mysql_*
使用しているもののような)関数は、PHPコミュニティによって(しばらくの間)維持されなくなり、非推奨プロセスが開始されました。赤いボックスが表示されますか?
あなたは本当により良いPDOまたはMySQLiを手に入れようとするべきです。これらのオプションはどちらも問題ありません。Imho PDOのAPIは優れていますが、mysqli
mysqlに向いています(ほとんどの場合、PDOは使用したいことをすべて実行します)。
2つの「新しい」APIを使用すると、プリペアドステートメントを使用することもできます。プリペアドステートメントを使用すると、値をクエリに挿入する前に手動で値をエスケープすることを心配する必要はありません。
PDOAPIを使用したこの例は次のとおりです。
$db = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare('SELECT COUNT(id) FROM articleList WHERE user = :user');
$stmt->execute(array('user' => $user));
ご覧のとおり、値はクエリに直接挿入されませんが、代わりにプレースホルダーを使用します。このコードは、人々がクエリに任意のSQLを挿入することを不可能にします。また、もうエスケープする必要はありません。
PDOとmysqlのどちらを使用するかを決定する際にさらにヘルプが必要な場合は、それに関する詳細情報が記載されたドキュメントを確認してください。PDOを選択した場合は、このトピックに関する優れたチュートリアルをここで見つけることができます。