SELECT * FROM $ _POST [] - PHP mySQL格式

时间:2012-04-12 22:04:31

标签: php jquery mysql

需要帮助格式化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...) });  });

5 个答案:

答案 0 :(得分:2)

不要那样做!它对SQL注入攻击持开放态度。为了上帝的缘故,验证并逃避您的意见。

至少,将其重写为:

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

答案 1 :(得分:1)

查询应该是:

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

答案 2 :(得分:1)

查询中的句点(。)是不必要的,因为您没有打破引号。这些都应该有效:

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

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

编辑:当然,这不是解决巨大的注入安全漏洞:]

答案 3 :(得分:0)

您在$query声明中的连接是错误的。

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

就足够了。

答案 4 :(得分: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;