私はこのコードを使用して、データベースにデータを挿入します。 私は以前のコードをmysqliに基づいてPDOを使用するように変更しました。PDO:文字列をエスケープする必要がありますか?
パラメータ2の名前とIDについては、PDOでmysqli_real_escape_stringのような関数を使ってエスケープする必要がありますか?、またはこれらのパラメータdirecltyをクエリに渡すことはできますか?
<?php
try
{
$pdo = new PDO('mysql:host='.$servername.';port='.$dbport.';dbname='.$dbname.'', $username, $decodedPwd);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$json = $_POST['jsonData'];
$id = $json["id"]
$name = $json["name"]
$pdo->beginTransaction();
// do request
$pdo->query('INSERT INTO test(id, name) VALUES ('$id', '$name')');
$pdo->commit();
echo 'Everything is OK';
}
catch(Exception $e)
{
$pdo->rollback();
echo 'An error occurred :<br />';
echo 'Error : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
exit();
}
自分でvarsを注入する代わりに、プリペアドステートメントを使用してプレースホルダを使用する必要があります。 – DarkBee
PDOはスタンドアロンソリューションであり、mysqliを動作させる必要はありません。 –
1)そのコードは有効ではありません。 2)いいえ、クエリに、特にユーザー入力から変数を連結しないでください。あなたはSQLインジェクションの結果になります。3)プリペアドステートメントを使用します。 –