我一直在尝试执行多个查询,所以我搜索了一个更好的方法来解决这个问题,我在php中读到了 mysqli_multi_query 。
我自己尝试看结果,但它一直给我错误。这是代码:
$studid = $_GET['stud_id'];
$classcode = $_GET['class'];
$conn = new MySQLi($host, $username, $password, $dbname) or die('Can not connect to database');
$sql = "SELECT * FROM tbl_students WHERE stud_id = '".$studid."'";
$sql.= "SELECT * FROM tbl_classes WHERE class_code = '".$classcode."'";
if (mysqli_multi_query($conn, $sql)) {
do {
/* store first result set */
if ($result = mysqli_store_result($conn)) {
while ($row = mysqli_fetch_row($result)) {
$studname = $row[3].", ".$row[1];
}
mysqli_free_result($result);
}
/* print divider */
if (mysqli_more_results($conn)) {
printf("-----------------\n");
$studname = $row['fname'];
}
} while (mysqli_more_results($conn));
}else{ echo "error";}
$conn->close();
使用上面的代码,它只会从我设置的else语句中打印错误。我也尝试将第二个查询更改为$sql .= "SELECT * FROM tbl_classes WHERE class_code = '".$classcode."'";
,并尝试在第一个查询后添加分号,告诉SQL我已完成第一个查询,因为我将2个字符串放在一起,但仍然没有运气。
答案 0 :(得分:0)
试试这个
<?php
error_reporting(E_ALL);
?>
答案 1 :(得分:0)
提出一个查询而不是两个:
"SELECT ts.*, tc.*
FROM tbl_students as ts, tbl_classes as tc
WHERE ts.stud_id = '$studid'
AND tc.class_code = '$classcode'"
注意:如果您获得了冗余数据,请使用group by。