我是php的新手,我真的可以使用一些帮助。
我有一个php文件,该文件以错误的顺序返回请求的信息或根本不返回信息,更改了我设法获得所需结果的php文件中的变量。
仍然,给定以下文件怎么办?
第一个php文件返回错误信息
<?php
$con = mysqli_connect("localhost", "user", "password", "user");
//$idquestion = @($_POST['idquestion']);
//$category = @($_POST['category']);
$idquestion="1";
$category="computers";
$statement = mysqli_prepare($con, "SELECT * FROM question WHERE idquestion=? AND category=?;");
mysqli_stmt_bind_param($statement, "is", $idquestion, $category);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $success, $idquestion, $question, $id);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["idquestion"] = $idquestion;
$response["question"] = $question;
$response["id"] = $id;
}
echo json_encode($response);
?>
输出
{"success":true,"idquestion":"Top programming languages?","question":"computers","id":1}
第二个php文件返回正确的信息
<?php
$con = mysqli_connect("localhost", "id8963226_user", "parola123", "id8963226_user");
//$idquestion = @($_POST['idquestion']);
//$category = @($_POST['category']);
$idquestion="4";
$category="computers";
$statement = mysqli_prepare($con, "SELECT * FROM question WHERE idquestion=? AND category=?;");
mysqli_stmt_bind_param($statement, "is", $idquestion, $category);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $success, $idquestion, $question, $id);
$response = array();
$response["success"] = false;
$response["idquestion"] = $idquestion;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["question"] = $idquestion;
$response["id"] = $id;
}
echo json_encode($response);
?>
输出
{"success":true,"idquestion":"1","question":"Top programming languages?","id":1}
第一个php文件背后的逻辑如何给我这些结果? 基本上,我希望LAST RESULTS能够工作而不弄乱代码。
欢迎任何意见。谢谢。
答案 0 :(得分:2)
在查询中,您正在使用SELECT *
,换句话说,是让Mysql按照它确定的顺序返回所有列。该顺序可能是定义列的顺序,但是基本上您无法控制列的顺序。
只要求您实际想要的列也更有效。
因此将查询更改为
$statement = mysqli_prepare($con, "SELECT idquestion, question, id
FROM question
WHERE idquestion=? AND category=?;");
现在您可以控制列的返回顺序。
所以当你运行这个
mysqli_stmt_bind_param($statement, "is", $idquestion, $category);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $idquestion, $question, $id);
列值将进入正确的变量。