gpt4 book ai didi

PHP mysql 返回 null,硬编码 SQL 查询有效

转载 作者:行者123 更新时间:2023-11-29 21:01:56 25 4
gpt4 key购买 nike

我遇到一个问题,无法在 PHP 程序中进行数据库查询。如果是硬编码的,则查询在程序中工作正常,但否则会失败并且不会传回任何结果。我已经回显了两个结果,并给出了不同的字符串长度,但给出的字符串是相同的(通过 var_dump 获取的字符串)。我已无计可施;我不太确定查询有什么问题。我尝试了几种针对类似问题的不同修复方法,但没有一个有效。我修剪了发布的输入,并且将变量用双引号引起来,而不是用单引号引起来,以便执行引用。我真的不知道出了什么问题。这是与该项目相关的代码:AJAX 调用 php 类:

chlorinator = ($('#chlorinator').val()).concat(' GS').trim();
$.ajax(
{
type: "POST",
url: "gravity.php",
data: "chlorinator="+chlorinator,
cache: false,
beforeSend: function () {
$('#results').html('<img src="loader.gif" alt="" width="24" height="24">');
},
success: function(html)
{
$("#results").html( html );
}});

这是相关的 php 代码:

<?php
include 'connection.php';
$chlorinator = trim( mysqli_real_escape_string ($dbhandle,$_POST["chlorinator"]));


$query = 'SELECT chlorinators.model_name, equipment.name, equipment.cutsheet_url, chlorinators.pump_specific, equipment.file_name
FROM chlorinators
INNER JOIN chlorinator_equipment
ON chlorinators.chlorinator_index = chlorinator_equipment.chlorinator_index
INNER JOIN equipment
ON chlorinator_equipment.equipment_index = equipment.equipment_index
WHERE chlorinators.model_name= "' . $chlorinator . '"';

echo "The value of the combined string is:<br> ";
var_dump($query);
echo '<br><br>';

echo "The value of the hard-coded string is:<br> ";
$query = 'SELECT chlorinators.model_name, equipment.name, equipment.cutsheet_url, chlorinators.pump_specific, equipment.file_name
FROM chlorinators
INNER JOIN chlorinator_equipment
ON chlorinators.chlorinator_index = chlorinator_equipment.chlorinator_index
INNER JOIN equipment
ON chlorinator_equipment.equipment_index = equipment.equipment_index
WHERE chlorinators.model_name= "2075 GS"';
var_dump($query);
echo '<br><br>';

if ($result = $dbhandle->query($query))
{?>
<br><br><?php
var_dump($result->fetch_assoc());

printf("<p style='font-family:sans-serif; text-align: center;'>The components of the %s are listed below</p><table id='form' name='pump' style='margin: auto; padding: auto'>", $_POST["chlorinator"]);

while($row = $result->fetch_assoc())
{
printf ("<div><tr><td>%s</td><td><a href='%s' download>Download</a></td></tr>", $row["name"],$row["cutsheet_url"]);
}
printf('</table>');
}


?>

对于这个特定示例,我使用值“2075 GS”作为加氯器值。它通常通过选择框上的更改来传递,因此这些值是硬编码的并且是正确的。这个具体示例的输出是:

string(403) "SELECT chlorinators.model_name, equipment.name, equipment.cutsheet_url, chlorinators.pump_specific, equipment.file_name FROM chlorinators INNER JOIN chlorinator_equipment ON chlorinators.chlorinator_index = chlorinator_equipment.chlorinator_index INNER JOIN equipment ON chlorinator_equipment.equipment_index = equipment.equipment_index WHERE chlorinators.model_name= "2075 GS""

string(404) "SELECT chlorinators.model_name, equipment.name, equipment.cutsheet_url, chlorinators.pump_specific, equipment.file_name FROM chlorinators INNER JOIN chlorinator_equipment ON chlorinators.chlorinator_index = chlorinator_equipment.chlorinator_index INNER JOIN equipment ON chlorinator_equipment.equipment_index = equipment.equipment_index WHERE chlorinators.model_name= "2075 GS""

我没有看到两个输出之间有任何区别;知道一个字符差异在哪里以及如何消除它以便我的查询能够正常工作吗?非常感谢任何帮助。

最佳答案

您应该尝试使用正确的函数进行调试,如下所示:

echo 'MySQL reports error #'.mysqli_errno($dbhandle).' - '.mysqli_error($dbhandle);

附:查看您的代码,我无法发现您的错误。

关于PHP mysql 返回 null,硬编码 SQL 查询有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147998/

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