この質問については何も見つかりませんでした。 mysqli_escape_stringをsql文の中に含めることにしました。そうしないと、たくさんの変数を使用する必要があったからです。だから私の質問は、このコードが有効かどうかです:php関数をSQLクエリに渡す
$sql = "UPDATE users SET
rank = 'mysqli_escape_string($_SESSION['rank'])'
WHERE some condition";
この質問については何も見つかりませんでした。 mysqli_escape_stringをsql文の中に含めることにしました。そうしないと、たくさんの変数を使用する必要があったからです。だから私の質問は、このコードが有効かどうかです:php関数をSQLクエリに渡す
$sql = "UPDATE users SET
rank = 'mysqli_escape_string($_SESSION['rank'])'
WHERE some condition";
このような値をパラメータとして渡す必要があります。それがあなたが望むことをする正しい方法です。しかし、あなただけのクエリ文字列のmungeことができます:「そう、私は変数のトンを使用しなければならないでしょう」:
$sql = "UPDATE users
SET rank = '".mysqli_escape_string($_SESSION['rank'])."'
WHERE some condition";
を私はこれを理解していません。
ありがとう!変数について...私がそれをやったのは、$ some_var = mysqli_escape_string($ something)でした。そして、私はたくさんのものを保存する必要があるので、多くの変数が必要です。どのようにパラメータとして渡すのですか?どういう意味ですか? –
いいえ、あなたは(も、あなたがmysqli_real_escape_stringに$リンクを渡す必要があり注意)このように、真ん中に機能を入れて連結を使用しなければならないでしょう:
$sql = "UPDATE users SET
rank = '" . mysqli_real_escape_string($link, $_SESSION['rank']) . "'
WHERE some condition";
それはパラメータを使用して、より良い練習だがこのようにすべての値に対して手動でmysqli_real_escape_stringを使用するかのようにバインドするのではなく、1つを忘れてセキュリティホールを作成するのは簡単です。結合パラメータ(これはMySQLiをを使用してのオブジェクト指向スタイルであることに注意)で、このクエリを実行する
:PHPがするのでmysqli_escape_stringは、二重引用符の内側にあるので
$stmt = $mysqli->prepare("UPDATE users SET rank = ? WHERE some condition");
$stmt->bind_param('s', $_SESSION['rank']);
// Run query
$stmt->execute();
いや、そのコードは、有効ではありません文字列の一部として参照し、実行しないでください。
機能を有効にする1つの方法は、関数が文字列の外側になるように、両括弧を前後に配置することです。この例では、ランクがテキストの場合は、内部に単一引用符を追加しています。この例では
$sql = "UPDATE users SET rank = '".mysqli_escape_string($_SESSION['rank'])."' WHERE some condition";
、$ _SESSION [ 'ランク'] = '金' は$ SQLは次のようになり場合:
UPDATE users SET rank = 'gold' WHERE some condition
使用パラメータの代わりに。それははるかに賢明です。 –