Php Mysqli选择多个查询
我试图通过使用Php Mysqli选择多个查询,php,mysql,mysqli,Php,Mysql,Mysqli,我试图通过使用user\u id来选择一个查询,以获取特定于该用户的类别,然后从中使用第一个查询的结果从第二个查询中的第二个表中选择数据。我想在下拉菜单中显示第二个查询的数据。有什么简单的方法可以做到这一点吗?我对使用mysqli还不熟悉,所以请容忍我 我有以下功能,但它没有在下拉菜单中显示任何内容,而是显示下拉菜单 function get_classes($mysqli) { if(isset($_SESSION['user_id'], $_SESSION['username'],
user\u id
来选择一个查询,以获取特定于该用户的类别,然后从中使用第一个查询的结果从第二个查询中的第二个表中选择数据。我想在下拉菜单中显示第二个查询的数据。有什么简单的方法可以做到这一点吗?我对使用mysqli还不熟悉,所以请容忍我
我有以下功能,但它没有在下拉菜单中显示任何内容,而是显示下拉菜单
function get_classes($mysqli) {
if(isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) {
$user_id = $_SESSION['user_id'];
if ($stmt = $mysqli->prepare("SELECT category_id
FROM questions WHERE user_id = ?")) {
$stmt->bind_param('i', $user_id);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows>0) {
$stmt->bind_result($category_id);
$stmt->fetch();
if($result = $mysqli->prepare("SELECT category_id, category_name
FROM category WHERE category_id = ?")) {
$result->bind_param('s', $category_id);
$result->execute();
$result->store_result();
}
}
echo "<select id='classes' name='classes'>";
while ($row = $result->fetch_assoc()) {
unset($user_id, $category_name);
$category_id = $row['category_id'];
$category_name = $row['category_name'];
echo '<option value="'.$category_id.'">'.$category_name.'</option>';
}
echo "</select>";
}
}
}
函数获取类($mysqli){
如果(isset($会话['user\u id'],$会话['username'],$会话['login\u string'])){
$user\u id=$\u会话['user\u id'];
如果($stmt=$mysqli->prepare($SELECT category\u id
来自用户(id=?“”)的问题{
$stmt->bind_参数('i',$user_id);
$stmt->execute();
$stmt->store_result();
如果($stmt->num_rows>0){
$stmt->bind\u result($category\u id);
$stmt->fetch();
如果($result=$mysqli->prepare($SELECT category\u id,category\u name
来自类别,其中类别(id=?“”){
$result->bind_参数('s',$category_id);
$result->execute();
$result->store_result();
}
}
回声“;
而($row=$result->fetch_assoc()){
未设置($user\u id,$category\u name);
$category_id=$row['category_id'];
$category_name=$row['category_name'];
回显“.$category_name.”;
}
回声“;
}
}
}
我正在使用以下代码从另一个页面调用该函数:
<?php
get_classes($mysqli);
?>
您可以通过一个sql查询完成所有操作:
SELECT c.category_id, c.category_name
FROM questions q
INNER JOIN category c ON c.category_id = q.category_id
WHERE q.user_id = ?
或者,您也可以加入它们,然后加入正常的抓取。例如:
function get_classes($mysqli) {
if(!isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) {
return false;
}
$user_id = $_SESSION['user_id'];
$sql = '
SELECT
category.category_id,
category.category_name
FROM category
JOIN questions
ON questions.category_id = category.category_id
WHERE questions.user_id = ?
';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('i', $user_id);
$stmt->execute();
$result = $stmt->bind_result($category_id, $category_name);
// printing
echo '<select name="classes" name="classes">';
while($row = $stmt->fetch()) {
echo '<option value="'.$category_id.'">'.$category_name.'</option>';
}
echo '</select>';
}
函数获取类($mysqli){
if(!isset($会话['user\u id'],$会话['username'],$会话['login\u string'])){
返回false;
}
$user\u id=$\u会话['user\u id'];
$sql='1
挑选
category.category\u id,
category.category\u名称
从类别
加入问题
关于问题.category\u id=category.category\u id
其中questions.user_id=?
';
$stmt=$mysqli->prepare($sql);
$stmt->bind_参数('i',$user_id);
$stmt->execute();
$result=$stmt->bind\u result($category\u id,$category\u name);
//印刷品
回声';
而($row=$stmt->fetch()){
回显“.$category_name.”;
}
回声';
}
您可能只需加入这些查询即可,更简单的方法是,是否设置了用户id?是的,用户id已设置您的SQL已断开,因为已返回所有类别和(针对)一些空问题。类别_id@user3272438使用函数:
@user3272438并始终打开错误报告,以便了解发生了什么<代码>错误报告(E_全部);ini_集('display_errors','1')在php文件ahhh之上,我设置了错误报告,并得到以下致命错误:调用未定义的方法mysqli_stmt::get_result()
@user3272438尝试我的修订版,get_result
仅在本机mysql驱动程序上可用mysqlnd