1

PHP変数をSQLクエリのテーブル名として使用できますか?私の場合、FROMの後に続くPHP変数は、JQueryコードから送信される値である必要があります。JQueryから送信された値に基づいてSQLクエリを変更したい(選択ボックスのどのオプションが選択されているかによって異なる値)。

$file_absolute = ---Placeholder for correct file path---;
include_once($file_absolute);
$mysql = new mysqli($db_host, $db_username, $db_password, $db_name);
$verb_value = $_POST['verb_value'];

$mysql->query("SET CHARACTER SET 'utf8'");

$result = $mysql->query("SELECT present_tense FROM $verb_value");
4

2 に答える 2

4

はい、これを行うことができます。それが必要かどうかはまったく別の問題です。SQLクエリにユーザー入力を追加する場合は、SQLインジェクションの大きな穴があります。

とはいえ、テーブル名を使用すると、ホワイトリストを実装し、渡された値をそれと比較して、セキュリティの尺度を取得できます。

ただし、テーブル名(または列名)をバインドされたパラメーターとして渡すことはできません。これらはクエリの一部として生成する必要があります。

于 2012-09-19T15:14:41.330 に答える
0

二重引用符で囲まれた文字列は、その中のすべての変数を解析するため、これは機能します。一重引用符で囲まれた文字列はそうではありません。

ただし、これは一般的に安全とは見なされません。実際にはパラメーターではないため、bindParamメソッドを使用してこれを実現できるかどうかはわかりません(mysqliではなくPDOを使用しています)。

于 2012-09-19T15:14:49.567 に答える