如何在PHP中执行2个或更多SQL查询而不连接表

如何在PHP中执行2个或更多SQL查询而不连接表,php,mysql,sql,mysqli,multi-query,Php,Mysql,Sql,Mysqli,Multi Query,要从1个表中选择数据,我使用以下代码: if(isset($UserID)) { $users = $con->prepare(" SELECT DISTINCT d.FirstName ,d.LastName ,d.Picture FROM Details d WHERE d.UserId = ? "); $

要从1个表中选择数据,我使用以下代码:

if(isset($UserID)) {    

    $users = $con->prepare("
    SELECT DISTINCT
         d.FirstName                
        ,d.LastName                 
        ,d.Picture  
    FROM Details d 
    WHERE d.UserId = ?
    ");

    $users->bind_param('i', $GetUserId);
    $users->execute();

    $users->bind_result(        
        $FirstName,             
        $LastName,          
        $Picture
    );


} else {
    echo "There is no User ID detected, try to refresh browser.";   
}

while ($users->fetch()) { ?>

    <div class="grid-group">
    <span>Personal Details</span>
        <div class="grid-column">
            <div class="grid-item header">First Name </div>             
            <div class="grid-item header">Last Name </div> 
            <div class="grid-item header">Picture </div> 
        </div>
        <div class="grid-column">
            <div class="grid-item"><?php echo $FirstName; ?></div>          
            <div class="grid-item"><?php echo $LastName; ?></div>
            <div class="grid-item"><?php echo $Picture; ?></div>
        </div>
    </div>
<?php } ?>
我应该使用mysqli\u multi\u查询吗?但是我如何使用它并在它之后绑定结果呢?我无法获得正确的语法。还是有别的办法

我需要打印两个表中的数据,如下所示:

while ($users->fetch()) { ?>

    <div class="grid-group">
    <span>Personal Details</span>
        <div class="grid-column">
            <div class="grid-item header">First Name </div>             
            <div class="grid-item header">Last Name </div> 
            <div class="grid-item header">Picture </div> 
        </div>
        <div class="grid-column">
            <div class="grid-item"><?php echo $FirstName; ?></div>          
            <div class="grid-item"><?php echo $LastName; ?></div>
            <div class="grid-item"><?php echo $Picture; ?></div>
        </div>
    </div>

    <div class="grid-group">
    <span>Foo Bar</span>
        <div class="grid-column">
            <div class="grid-item header">Foo </div>            
            <div class="grid-item header">Bar </div> 
            <div class="grid-item header">FooBar </div> 
        </div>
        <div class="grid-column">
            <div class="grid-item"><?php echo $Foo; ?></div>            
            <div class="grid-item"><?php echo $Bar; ?></div>
            <div class="grid-item"><?php echo $FooBar; ?></div>
        </div>
    </div>
<?php } ?>

你有什么想法吗?

要知道为什么会出现一个空白屏幕,你必须打开错误报告,请在php代码开头添加以下内容,然后再执行其他操作:

error_reporting(-1);
还添加一些代码以显示MySQL中可能发生的错误:

if(isset($UserID)) {    

$users = $con->prepare("
SELECT DISTINCT
     d.FirstName                
    ,d.LastName                 
    ,d.Picture  
FROM Details  
WHERE d.UserId = ?
");
if (!$users) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

$binding = $users->bind_param('i', $GetUserId);
if (!$binding) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

if($users->execute() == false) {
    echo 'Error: ' . $con->error;
}

$binding_results = $users->bind_result(        
    $FirstName,             
    $LastName,          
    $Picture
);
if (!$binding_results) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

$users2 = $con->prepare("
SELECT DISTINCT
      Foo               
    , Bar               
    , FooBar 
FROM Bizz  
WHERE UserId = ?
");
if (!$users2) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

$binding2 = $users2->bind_param('i', $GetUserId);
if (!$binding2) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

if($users2->execute() == false) {
    echo 'Error: ' . $con->error;
}

$binding_results2 = $users2->bind_result(       
    $Foo,           
    $Bar,           
    $FooBar
);
if (!$binding_results2) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

我在你的第一个问题中发现了一个错误。您使用的是d.FirstName,其中表名为Details

这两个表之间是否有链接?或者你可以简单地做两个独立的查询?您只需准备并执行一个新的查询?我不明白你为什么不能?@Random我想要简单的使用单独的查询。然后这样做?是什么阻止了你?只需简单地将prepare复制粘贴到bind结果并更改查询?那么为什么不简单地进行两个单独的查询,将结果存储在两个单独的数组中?屏幕仍然空白,这与alias
d
无关,我只是在编写示例数据时错过了它。而且
error\u reporting
以前也是打开的<代码>如果($users->execute()==false){也没有帮助。这就是我问这个问题的原因,看起来不能简单地使用2个查询。你应该在准备、绑定和执行之后添加catch mysql错误。在这之前还有没有你遗漏的php代码?我编辑了我的答案,我认为应该捕捉mysql中的任何错误。有问题。我已经测试了这两个错误在phpmyadmin中的eries1st和2nd,都正确地选择了结果。在尝试以您提供的方式捕获错误后,我收到一条消息:
MySQL Connect Error in Query:()
2次,没有错误号。我已经在
if(!$binding\u results)
$users2=$con->prepare中测试了它(“
,但看起来没有MySQL错误,任务运行正常。。。
error_reporting(-1);
if(isset($UserID)) {    

$users = $con->prepare("
SELECT DISTINCT
     d.FirstName                
    ,d.LastName                 
    ,d.Picture  
FROM Details  
WHERE d.UserId = ?
");
if (!$users) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

$binding = $users->bind_param('i', $GetUserId);
if (!$binding) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

if($users->execute() == false) {
    echo 'Error: ' . $con->error;
}

$binding_results = $users->bind_result(        
    $FirstName,             
    $LastName,          
    $Picture
);
if (!$binding_results) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

$users2 = $con->prepare("
SELECT DISTINCT
      Foo               
    , Bar               
    , FooBar 
FROM Bizz  
WHERE UserId = ?
");
if (!$users2) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

$binding2 = $users2->bind_param('i', $GetUserId);
if (!$binding2) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}

if($users2->execute() == false) {
    echo 'Error: ' . $con->error;
}

$binding_results2 = $users2->bind_result(       
    $Foo,           
    $Bar,           
    $FooBar
);
if (!$binding_results2) {
    echo 'MySQL Connect Error in Query: (' . $mysqli->errno . ') ';
}