【问题标题】:Query doesn't work查询不起作用
【发布时间】:2010-06-26 16:02:01
【问题描述】:

我在尝试此查询时收到以下错误消息:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

您的 SQL 语法有错误。查看与您的 MySQL 服务器版本相对应的手册,了解在

附近使用的正确语法
(18, , 'Y', NOW())' at line 1

我的代码中的所有内容都有效,除了这一行。我知道它与 $_POST 数组变量有关,但我不知道正确的语法。

如果您需要更多代码,我很乐意提供。

【问题讨论】:

  • 你能再贴一些代码吗?什么是完整的$query?

标签: php mysql post arrays


【解决方案1】:

您在$i 周围使用单引号是错误的:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

这将导致使用 $i 字面意思,而不是使用 $i 的值(这是我假设您需要的)。

这应该可行:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";

【讨论】:

  • 正是我所需要的。我尝试了几乎所有的单引号和大括号变量,除了那个。谢谢。
【解决方案2】:

如果您想要更好的帮助,请显示发送帖子变量的代码(可能是表单或 AJAX 请求)。

但您的问题可能出在此处:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

帖子的评估结果类似于$_POST['type']['1']。你可能想要$_POST['type'][1]。

所以试试这个:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";

【讨论】:

    【解决方案3】:

    如前所述。

    $query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";
    

    应该阅读

    $query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";
    

    很好奇你为什么使用“{ }”。

    也就是说,您应该始终避免将 $_GET 或 $_POST 中的变量直接输入到要在查询或您网站的任何其他方面使用的代码中。

    您确实应该养成习惯或通过您预先确定的方式传递变量。

    更不用说,你会在运行 sql 查询之前转义这些变量吗?

    看看

    http://php.net/mysql_real_escape_string http://php.net/pdo.quote

    如果你有时间,研究一下 pdo。

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 2013-09-04
      • 2011-11-29
      • 1970-01-01
      • 2015-01-13
      • 2014-01-19
      • 2016-08-11
      • 2012-08-18
      • 2015-08-18
      相关资源
      最近更新 更多