【发布时间】:2011-04-11 20:43:44
【问题描述】:
2011 年 4 月 14 日更新
还是有问题。我将代码简化为最简单的形式。我使用 IF 函数来检查 isset() 的复选框,它工作正常。如果选中该复选框,它将连接由两部分组成的字符串。很简单。
if (isset($_POST[testType1])) {
$filterQuery .= "(testType1 = '1'";
}
$filterQuery .= ") ";
}
当我使用 mysql_fetch_assoc 并在 $rows 中回显信息时,它可以工作。但是当我在谷歌浏览器中查看页面源时,它会说:
Invalid query: 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 '' at line 1;
如果我回显 $filterQuery,它会正确显示,并且当我将回显的字符串复制到我的代码中时,MySQL 会返回正确的结果:
SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1')
我也尝试将 $filterQuery 转换为字符串。没有成功。
2011 年 12 月 4 日更新
我还是有问题,不是错字。见以下代码:
$query = "SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE ";`
$orTrigger = "";`
function setOrTrigger() {
global $orTrigger;
if ($orTrigger=="") {
$orTrigger="OR ";
}
}
function getTestFilterQuery($testType) {
if (!(isset($_POST[test1])) && !(isset($_POST[test2])) && !(isset($_POST[test3]))) {
$returnString = NULL;
return $returnString;
}
}
if (isset($_POST[testType1])) {
$filterQuery .= $orTrigger ."(testType1 = '1'";
setOrTrigger();
$addTestFilterQuery = getTestFilterQuery("testType1");
if ($addTestFilterQuery != NULL) {
$filterQuery .= "AND " .$addTestFilterQuery;
}
$filterQuery .= ") ";
}
$connection = mysql_connect(localhost, $username, $password);
if (!$connection) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
$result = mysql_query($filterQuery);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
while ($row = @mysql_fetch_assoc($result)) {
echo $row['name'];
echo $row['description'];
}
当我回显 $query 时,我得到:
SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1')
当我将它直接复制到 mysql_query 中时:
mysql_query("SELECT * FROM fdatav1 JOIN ddatav1 ON ddatav1.ID = fdatav1.ID WHERE (testType1 = '1')");
它工作正常。但是当我传递变量时:
mysql_query($filterQuery);
我在 '' 附近得到一个语法错误。有谁知道如何解决这个问题?
【问题讨论】:
-
你得到什么错误?也许向我们展示您的代码?
-
您能否给出一个固定变量的代码示例,例如 $tmp = 'myname' 和选择以及如何将变量插入到查询中
-
您可能应该发布您的代码。否则,我们就是瞎子。
-
The variable sql statement starts with "SELECT FROM... and ends with "是的,这很酷。但我们想要一些真正的代码。 -
这就像在停电中猜测..但我猜答案是“反引号”
标签: php mysql phpmyadmin syntax-error