我试图从数据库中的一个表中提取一个数字,然后使用该数字处理同一数据库中另一个表的查询。
代码不会吐出任何错误 - 它只是不返回字符串!我试图了解mysqli和整个数组结构,但我很难弄清楚为什么这不起作用。我相信我试图成功地将原始数组转换为字符串,以便在第二个查询中使用,我也将其转换为echo的字符串。只是因为某些原因它不打印任何东西!如果我取出嵌套循环然后打印active_event数就好了。我不知所措!
<?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();
?>
谢谢!
-Philip
答案 0 :(得分:1)
我建议您更改代码的逻辑,以更有效的方式修改数据库模式。
我在单个查询中获取结果,连接两个表asp_config和asp_events,或者更好的是,如果可能的话,除去asp_config并在asp_events表中添加一个列is_active
或类似的东西。
然后你只需要在没有第二个查询的情况下循环使用while循环,因为你需要知道的只是在第一个结果集中。 小心使用需要的错误抑制(@)来了解是否存在错误并进行处理。抑制而不知道这是一个糟糕的实践
答案 1 :(得分:0)
不幸的是,加入这两个表并不是一个选项,我还有其他需要使用相同类型功能的查询,因此将所有表合并为一个表是不可行的。这一切都说,我确实搞清楚了。我认为最大的问题是在尝试插入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();
?>
在这种情况下,我在另一个循环中有一个查询循环,它确实返回正确的数据。它可能不是最漂亮的代码,但它起作用并且是我的情况所需要的。
感谢您的帮助!