gpt4 book ai didi

php - mysql错误查询

转载 作者:行者123 更新时间:2023-11-30 23:20:19 25 4
gpt4 key购买 nike

我在这里遇到了一个问题,我有这个问题:

function getPrelaciones($carnet){
$result = query(
"SELECT mhm.Materia_codigo1
FROM Materia_has_Materia mhm
, Materia m
, (SELECT mha.Materia_codigo as materianovista
FROM Materia_has_Alumno mha
WHERE mha.Alumno_carnet = '11111') as n
WHERE n.materianovista = mhm.Materia_codigo
AND mhm.Materia_codigo1 != ''
AND n.materianovista = m.codigo");

print json_encode($result);
}

它有效,但是当我尝试使其通用时,将 '11111' 切换为 $carnet 就像下一个查询一样,它不起作用,但它有效但它返回一个空的 json:

function getPrelaciones($carnet){
$result = query(
"SELECT mhm.Materia_codigo1
FROM Materia_has_Materia mhm
, Materia m
, (SELECT mha.Materia_codigo as materianovista
FROM Materia_has_Alumno mha
WHERE mha.Alumno_carnet = '%s' ) as n
WHERE n.materianovista = mhm.Materia_codigo
AND mhm.Materia_codigo1 != ''
AND n.materianovista = m.codigo", $carnet);
print json_encode($result);
}

有解决办法吗,谢谢

我的查询函数是这样的:

function query() {
global $link;
$debug = false;

//get the sql query
$args = func_get_args();
$sql = array_shift($args);

//secure the input
for ($i=0;$i<count($args);$i++) {
$args[$i] = urldecode($args[$i]);
$args[$i] = mysqli_real_escape_string($link, $args[$i]);
}

//build the final query
$sql = vsprintf($sql, $args);

if ($debug) print $sql;

//execute and fetch the results
$result = mysqli_query($link, $sql);
if (mysqli_errno($link)==0 && $result) {

$rows = array();

if ($result!==true)
while ($d = mysqli_fetch_assoc($result)) {
array_push($rows,$d);
}

//return json
return array('result'=>$rows);

} else {

//error
return array('error'=>'Database error');
}
}

最佳答案

首先是基础调试。改变这个:

$debug = false;

...进入这个:

$debug = true;

您将看到 SQL 包含的内容。

我有根据的猜测,如果您没有启用完整的错误报告并且您忘记了初始化 $link,那么您会(没有)看到这个警告:

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given

...在这一行:

$args[$i] = mysqli_real_escape_string($link, $args[$i]);

mysqli_real_escape_string()失败它返回 NULL,然后显示你的 SQL 查询,你得到这个:

WHERE mha.Alumno_carnet = ''
^^

旁注:

  1. 您正在使用支持准备语句的现代库。为什么要关心转义?

  2. 您认为 urldecode() 到底做了什么? url 前缀表示什么?

关于php - mysql错误查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15807931/

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