我目前有一个AngularJS应用程序,通过链接到PHP脚本的工厂查询数据库。下面的脚本完全按照计划工作,并输出用于Angular的JSON:
<?php
function getCompanyDetails($company_id)
{
// Connect to the database.
require_once("config/connection.php");
$query = "SELECT id, header, content FROM company_details WHERE company_id = ?;";
$stmt = $conn->stmt_init();
if($stmt->prepare($query)) {
$stmt->bind_param("i", $company_id);
$stmt->execute();
$data = $stmt->get_result();
while($row = $data->fetch_assoc()) {
$result[] = $row;
}
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$stmt->close();
mysqli_close($conn);
echo json_encode($result);
}
}
getCompanyDetails(1);
?>
现在,我有应用程序的其他部分需要完全相同的操作(从数据库中选择结果),我正在使用以下脚本(与上面的脚本几乎相同的副本):
<?php
function getCompanyProjects($company_id)
{
// Connect to the database.
require_once("config/connection.php");
$query = "SELECT title, description FROM company_projects WHERE company_id = ?;";
$stmt = $conn->stmt_init();
if($stmt->prepare($query)) {
$stmt->bind_param("i", $company_id);
$stmt->execute();
$data = $stmt->get_result();
while($row = $data->fetch_assoc()) {
$result[] = $row;
}
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$stmt->close();
mysqli_close($conn);
echo json_encode($result);
}
}
getCompanyProjects(1);
?>
问题是,第二个脚本不会返回任何结果。数据库中有该表的记录,我相信每次使用后我都会关闭连接。我已经纠结了一段时间了,有人知道可能是什么问题吗?
查询SELECT title, description FROM company_projects WHERE company_id = ?;
在phpMyAdmin上运行。
提前谢谢。
在尝试了fetch_assoc(), fetch_array(), mysqli_fetch_assoc()
和许多其他方法,重置了服务器几次,到处都是echos
和var_dumps
之后,我意识到所有的数据都被检索到了while
部分。
当我在while循环中实际迭代var_dump
时,我看到了一个未识别字符的小符号。在最后的一个结果中有一句未加注释的话。去掉这个小朋友后,fetch_assoc()
又开始工作了。问题出在实际数据上,而不是代码上。两个脚本现在都能使用正确的数据正常工作。
谢谢大家的帮助!在问这个问题之前,我不知道var_dump
是什么,这是一个非常有用的函数。