gpt4 book ai didi

php - jTable jQuery 插件 为什么我的 MySQL 存储过程失败?

转载 作者:行者123 更新时间:2023-11-30 00:08:34 24 4
gpt4 key购买 nike

我正在尝试在 jTable 中实现过滤器。这是jTable Filtering Demo .

我使用演示提供的 jQuery 代码成功将 POST 数据发送到 listAction php 脚本。我访问此数据并将其分配给 $filter 变量。我还在字符串前后添加了两个通配符,以告诉 MySQL 执行全面搜索而不是索引搜索。

    $filter = '%';
$filter .= $_POST['name'];
$filter .= '%';
$startIndex = $_GET['jtStartIndex'];
$pageSize = $_GET['jtPageSize'];
$sorting = $_GET['jtSorting'];

然后我调用存储过程并传入每个变量。我删除了实际的数据库和过程名称,但我验证了它们是正确的。

$mysqli->query("USE data;");
$res = $mysqli->query("CALL proced($startIndex, $pageSize, $filter);");

$res 在这里返回 false。

调用存储过程绝对有效,因为我还有其他功能以这种方式工作。我还有其他存储过程可以正确返回 0 到 9 条记录。这是当前的存储过程代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `proced`(startIndex INTEGER, pageSize INTEGER, filter VARCHAR(255))
BEGIN
SELECT * FROM reports
WHERE `new`=0 AND ReportingName LIKE filter
ORDER BY idReports ASC
LIMIT startIndex, pageSize;
END

在 MySQL 工作台中传递值是有效的,并且查询返回正确的行:

call proced(
0,
10,
'Art%'
);

但是 jTable 失败,并显示“与服务器通信时发生错误。”

有人能指出我正确的方向吗?

最佳答案

通过从 MySQL 返回错误来实现此功能:

if(!$res){
ChromePhp::log($mysqli->error);
die('error ['. $mysqli->error . ']');

}

错误:

Unknown column 'Art' in 'field list'

Solution (从链接复制):

尝试对“Art”使用不同的引号,因为标识符引号字符是反引号(“`”)。否则 MySQL“认为”您指向名为“Art”的列。

另请参阅 MySQL 5 文档

因此,只需向传入的 String 参数添加单引号即可:

CALL procedure('$filter');

关于php - jTable jQuery 插件 为什么我的 MySQL 存储过程失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24293054/

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