1

mySQLクエリ文字列のフォーマットについてサポートが必要です。次のクエリは「解析エラー、T_STRINGまたはT_VARIABLEを期待しています」を返します

PHP:

<?php


include 'db_connect.php';

mysql_select_db($databaseName, $con);

$query = "SELECT * FROM .$_POST['tab']. WHERE plant_code = .$_POST['plant_code']";

$result = mysql_query($query) or die (mysql_error());

$row = mysql_fetch_assoc($result);

echo json_encode($row);

?>

jQuery:

$('#profiles_desktops').click(function(){
                $.post("php/loadProfile.php", {plant_code : selectedSite, tab : "profiles_desktops"}, function(result){ (do something here...) });  });
4

5 に答える 5

3

やめてください!SQLインジェクション攻撃に対して広く開かれています。神のために、入力を検証してエスケープします。

少なくとも次のように書き直してください。

$query = "SELECT * FROM `".mysql_real_escape_string($_POST['tab'])."` WHERE plant_code = '".mysql_real_escape_string($_POST['plant_code'])."'";
于 2012-04-12T22:09:09.173 に答える
1

クエリは次のようになります。

"SELECT * FROM ".$_POST['tab']." WHERE plant_code =".$_POST['plant_code']
于 2012-04-12T22:06:46.063 に答える
1

引用符を壊さなかったため、クエリのピリオド(。)は不要です。これらのいずれかが機能するはずです:

$query = "SELECT * FROM $_POST['tab'] WHERE plant_code = $_POST['plant_code']";

また

$query = "SELECT * FROM " . $_POST['tab'] . " WHERE plant_code = " . $_POST['plant_code'];

編集:もちろん、これは巨大な注入セキュリティホールに対処していません:]

于 2012-04-12T22:08:14.617 に答える
0

$query宣言の連結が間違っています。

$query = "SELECT * FROM " . $_POST['tab'] . "WHERE plant_code = '" . mysql_real_escape_string($_POST['plant_code']) . "'";

十分でしょう。

于 2012-04-12T22:09:05.953 に答える
0

する必要があります:

$query = "SELECT * FROM ".$_POST['tab']." WHERE plant_code = ".$_POST['plant_code'];

php変数を二重引用符で囲む必要があります(変数で終了するため、最後の変数は省略します。二重引用符の代わりに、PHPは変数を認識し、前の値に変換するため、ドットを省略します。クエリが実行されます。また、sqlは、何らかの理由で括弧で囲まれた配列変数を好みません。すべての値を変数に入れてみてください。これも読みやすくなっています。

$tab = $_POST['tab'];
$plant = $_POST['plant_code'];
$query = "SELECT * FROM ".$tab." WHERE plant_code = ".$plant;
于 2012-04-12T22:10:55.100 に答える