gpt4 book ai didi

php - 变量连接的 mysql 查询字符串在 phpMyAdmin 中运行良好,但在脚本中运行 PHP 则不行

转载 作者:行者123 更新时间:2023-11-29 14:51:35 25 4
gpt4 key购买 nike

更新于 2011 年 4 月 14 日

还是有麻烦。我将代码简化为最简单的形式。我使用 IF 函数来检查 isset() 中的复选框,效果很好。如果选中该复选框,它将连接一个由两部分组成的字符串。非常简单。

if (isset($_POST[testType1])) {
$filterQuery .= "(testType1 = '1'";
}
$filterQuery .= ") ";
}

当我使用 mysql_fetch_assoc 并回显 $rows 中的信息时,它可以工作。但是当我在 Google Chrome 中查看页面源时,它显示:
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);

我在“”附近遇到语法错误。有谁知道如何解决这个问题吗?

最佳答案

您实际上是否在字符串中添加了双引号,例如:

$query = '"SELECT * FROM table WHERE col = value"';
echo $query; //output is exactly: "SELECT * FROM table WHERE col = value"

如果是这样,您需要从字符串、mysql_query 或任何采用普通字符串的内容中删除 ",例如:

$query = "SELECT * FROM table WHERE col = value";
echo $query; //output is exactly: SELECT * FROM table WHERE col = value

以同样的方式,您不会在字符串中使用 ; 结束 SQL 查询,例如: $query = "SELECT * FROM table WHERE col = value;";

关于php - 变量连接的 mysql 查询字符串在 phpMyAdmin 中运行良好,但在脚本中运行 PHP 则不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5627327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com