MySql查询错误[语法错误,意外''(T_ENCAPSED_AND _...]

时间:2013-10-14 14:17:16

标签: php mysql

我的查询有些问题可以帮我解决一下吗?

这是我的代码:

 mysql_query ("INSERT INTO categories_to_sales (sales_id, categories_id, value) VALUES ('$sale_id','$catid', '$_POST['txtCategorie_' . '$catid']') ");  

当我使用此代码时,出现以下错误:

  

解析错误:语法错误,意外'' (T_ENCAPSED_AND_WHITESPACE),在第91行的addsales.php中期待标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)

我认为这可能与$ _POST []有关。

3 个答案:

答案 0 :(得分:0)

我通过将查询更改为:

来修复查询
  mysql_query("INSERT INTO categories_to_sales (sales_id, categories_id, value) VALUES ('$sale_id','$catid', '" . $_POST['txtCategorie_' . "$catid"] . "' )");                     

答案 1 :(得分:-1)

这是一个引用问题,您正在处理$ _POST(如您所怀疑的那样)。试试这个:

mysql_query ("INSERT INTO categories_to_sales (sales_id, categories_id, value) VALUES ('$sale_id','$catid', '".$_POST['txtCategorie_' . $catid]."') ");

请注意$ _POST部分附加的引号。

正如其他评论中所提到的,你真的应该逃避$ _POST值,以及使用mysqli而不是mysql。

更好的是这样的:

$sql = "INSERT INTO categories_to_sales
          (sales_id, categories_id, value)
        VALUES
          ('".mysqli_real_escape_string($db, $sale_id)."',
           '".mysqli_real_escape_string($db, $catid)."',
           '".mysqli_real_escape_string($db, $_POST['txtCategorie_' . $catid])."');";

mysqli_query($db, $sql);

答案 2 :(得分:-2)

这应该有效(并且稍微分解一下):

版本1,如果“_”是帖子参数名称的一部分:

$value  = $_POST['txtCategorie_']; 
$value .= $_POST['$catid'];

$query  = "INSERT INTO categories_to_sales (sales_id, categories_id, value) VALUES
('$sale_id','$catid', '$value');

$result = mysql_query ($query);

版本2,如果“_”不是您的帖子参数名称的一部分,应该只附加到您的值

$value  = $_POST['txtCategorie'];
$value .= "_"; 
$value .= $_POST['$catid'];

$query  = "INSERT INTO categories_to_sales (sales_id, categories_id, value) VALUES
('$sale_id','$catid', '$value');

$result = mysql_query ($query);

但正如评论中提到的那样,你应该阅读一些关于SQL注入和安全性的讲座。