php ajax可以工作,但不能在本地主机上工作
我最近在工作中继承了一个项目,我正试图在本地主机上设置一个本地实例,这样我就可以使用它,而不会影响实时站点。问题是一些ajax调用在响应时给了我错误。id是用户id,在工作实例中,它返回权限表中id与用户表中id匹配的任何行。这只是本地主机上的一个问题。任何关于为什么会发生这种情况的建议都将不胜感激。谢谢 Ajax调用 PHP 错误php ajax可以工作,但不能在本地主机上工作,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我最近在工作中继承了一个项目,我正试图在本地主机上设置一个本地实例,这样我就可以使用它,而不会影响实时站点。问题是一些ajax调用在响应时给了我错误。id是用户id,在工作实例中,它返回权限表中id与用户表中id匹配的任何行。这只是本地主机上的一个问题。任何关于为什么会发生这种情况的建议都将不胜感激。谢谢 Ajax调用 PHP 错误 更改过程,使其仅返回要绑定的3列。另外,我建议使用JOIN而不是子查询,因为众所周知,MySQL在优化该语法方面很差 SELECT p.id, p.user, p.
更改过程,使其仅返回要绑定的3列。另外,我建议使用
JOIN
而不是子查询,因为众所周知,MySQL在优化该语法方面很差
SELECT p.id, p.user, p.status
FROM user_permissions AS p
JOIN users AS u ON u.id = p.user_id
WHERE u.uid = p_eid\
如果无法更改过程,则需要更改PHP,使其绑定的变量与user\u permissions
表中的列数相同
为了避免SQL注入问题,在进行查询时使用bind_param
:
$sql = "CALL CheckAdmin(?)";
$result = $mysqli->prepare($sql);
$result->bind_param("s", $eid);
$result->execute();
var_dump($col1);
var_dump($2);
var_dump($3)代码>
也许一个变量是数组
user_权限有多少列?此错误告诉您,当您调用
bind_result
函数时,您试图绑定的变量比实际返回的变量多。您容易受到或减少变量的攻击。顺便说一句,在进行查询时应该使用bind_param
,而不是在SQL中进行变量替换。我使用了错误的用户名lol。谢谢你的建议。谢谢,我已经想到了这一点。这是表中仅有的三列。这就是我觉得奇怪的原因。它应该返回匹配数量的列,并且在web服务器上工作。我猜您的表架构在localhost上与在服务器上不同。谢谢,是的,我刚刚计算出来,非常接近。我在存储过程中使用了错误的用户名。谢谢汉克斯,他已经试过了。结果证明是一个错误的用户名。
CREATE DEFINER=`myDB`@`%` PROCEDURE `CheckAdmin`(IN p_eid CHAR(36))
BEGIN
SELECT * FROM user_permission WHERE (SELECT id FROM users WHERE uid = p_eid) = user_id;
END
Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
SELECT p.id, p.user, p.status
FROM user_permissions AS p
JOIN users AS u ON u.id = p.user_id
WHERE u.uid = p_eid\
$sql = "CALL CheckAdmin(?)";
$result = $mysqli->prepare($sql);
$result->bind_param("s", $eid);
$result->execute();