Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 嵌套MySQLI查询_Php_Mysql_Sql_Mysqli - Fatal编程技术网

Php 嵌套MySQLI查询

Php 嵌套MySQLI查询,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我试图从数据库中的一个表中提取一个数字,然后使用该数字处理同一数据库中另一个表上的查询 代码没有抛出任何错误,只是没有返回字符串!我试图理解mysqli和整个数组结构,但我很难弄清楚为什么它不起作用。我相信我正在尝试成功地将原始数组转换为字符串,以便在第二个查询中使用,我还将其转换为echo的字符串。只是因为某些原因,它没有打印任何东西!如果我取出嵌套循环,那么它会很好地打印活动的事件号。我不知所措 <?php $DBServer = 'localhost'; $DBUser = 'u

我试图从数据库中的一个表中提取一个数字,然后使用该数字处理同一数据库中另一个表上的查询

代码没有抛出任何错误,只是没有返回字符串!我试图理解mysqli和整个数组结构,但我很难弄清楚为什么它不起作用。我相信我正在尝试成功地将原始数组转换为字符串,以便在第二个查询中使用,我还将其转换为echo的字符串。只是因为某些原因,它没有打印任何东西!如果我取出嵌套循环,那么它会很好地打印活动的事件号。我不知所措

<?php
$DBServer = 'localhost';
$DBUser   = 'user';
$DBPass   = 'pass';
$DBName   = 'database';
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($conn->connect_error) {
trigger_error('Database connection failed: '  . $conn->connect_error, E_USER_ERROR);
}
$get_active_event = mysqli_query($conn, "SELECT active_event FROM asp_config");
while($active_event = @mysql_fetch_assoc($get_active_event)){
$get_event_name = mysqli_query($conn, "SELECT * FROM asp_events WHERE id = {$active_event['active_event']}"); echo $get_event_name->fetch_object()->event_name;}
$conn->close();
?>

我建议更改代码的逻辑,以更有效的方式修改db模式

我会在一个连接两个表asp\U config和asp\U events的查询中获取结果,或者,如果可能的话,去掉asp\U config并在asp\U events表中添加一个列
is\u active
或类似的内容

然后,您只需使用while循环而不使用第二个查询,因为您需要知道的只是第一个结果集。
小心使用错误抑制(@),您需要知道是否存在错误并进行处理。抑制而不知道这是一个糟糕的做法

不幸的是,连接两个表不是一个选项,我还有其他查询需要使用相同类型的功能,因此将所有表合并为一个是不可行的。尽管如此,我还是找到了答案。我认为最大的问题是,在尝试插入PHP变量之前,我没有退出SQL模式,因此我最终查询了一个返回空白数据集的空行。我使用的最后一个代码是:

<?php
$DBServer = 'localhost';
$DBUser   = 'user';
$DBPass   = 'pass';
$DBName   = 'actionsports';
$con = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($con->connect_error) {
trigger_error('Database connection failed: '  . $con->connect_error, E_USER_ERROR);
}

$get_active_event = mysqli_query($con,"SELECT * FROM asp_config");
while($active_event = mysqli_fetch_array($get_active_event))
{
$get_event_name = mysqli_query($con, "SELECT * FROM asp_events WHERE id=('" .$active_event['active_event'] ."')");
if ($get_active_event === false) {
exit("Error: " . mysqli_error($con));
}
while($event_name = mysqli_fetch_array($get_event_name))
  {    echo $event_name['event_name'] ;}}
$con->close();
?>

你用什么教程来学习mysqli?我并不是真的-主要是脱离了PHP手册。我上一次编写PHP是在MySQLi非常普遍之前,所以我使用了MySQL和过程代码。因为我已经多年没有写过任何东西了,所以切换到推荐的面向对象风格有点让人头疼。:-)陛下错误抑制?我不相信我用的是什么。我同意,对于一个开发环境,我通常会尝试使用详细的错误,而不是在代码级别抑制它们。