在MySQL查询字符串WHERE子句中使用PHP变量

时间:2013-11-21 11:26:16

标签: php mysql

将PHP变量添加到MySQL字符串的正确语法究竟是什么?

这是我的疑问:

"SELECT cd.SectionID, cd.CompanyName, cd.ShowOnSite, cd.LiveDate, cd.EndDate, cds.SiteID, s.SiteName
    FROM CompanyDirectory cd
    LEFT JOIN CompanyDirectorySections cds ON cd.SectionID = cds.SectionID
    LEFT JOIN Sites s ON cds.SiteID = s.SiteID
    WHERE s.SiteID = " . $id . " AND cd.ShowOnSite = 'y'
    ORDER BY cd.EndDate DESC"

但它引发了以下情况:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND cd.ShowOnSite = 'y' ORDER BY cd.EndDate DESC' at line 5

我也试过WHERE s.SiteID = $idWHERE s.SiteID = '" . $id . "',但无济于事。前者给出一个空白屏幕,后者给出上述错误。变量是一个整数。

我在phpMyAdmin中尝试了查询,它完美地运行,用变量替换实际ID。

注意:如果重要,则在查询之前通过$id从表单收到$id = $_POST['id'];,然后将其删除并转发。

感谢。

1 个答案:

答案 0 :(得分:2)

如果MySQL说“ AND cd.ShowOnSite ='y'”附近有错误,这通常意味着它之前的任何问题都存在问题 - 在这种情况下, $ ID 即可。

您可以在PHP文件中打印出查询吗?这可能会显示 $ id 实际上是空白的,这会使查询看起来像“ WHERE s.SiteID = AND cd.ShowOnSite ='y'”。< / p>

如果它是空白的,那么 $ id 值显然有问题,您需要在MySQL代码之前进行整理。