【问题标题】:mysql running 3 queries gets blank pagemysql运行3个查询得到空白页
【发布时间】:2018-09-30 07:27:40
【问题描述】:

我正在使用 PHP 和 MySQL 运行以下查询,但如果我只查询 1 个查询它可以工作,但如果我执行 3 个查询它就不起作用

知道为什么吗?

似乎是 while $ )) 引起了问题,但尝试了很多方法,但它什么也没显示

 $boletas = mysqli_query($datacenter, "
    SELECT * FROM ventas 
    WHERE documento = 'boleta' 
    ORDER BY id DESC LIMIT 1");
$facturas = mysqli_query($datacenter, "
    SELECT * FROM ventas WHERE documento = 'factura' 
    ORDER BY id DESC LIMIT 1");
$notas = mysqli_query($datacenter, "
    SELECT * FROM ventas 
    WHERE documento = 'nota' 
    ORDER BY id DESC LIMIT 1");
while($mostrar = mysqli_fetch_assoc($revisar)){
    while($boleta = mysqli_fetch_assoc($boletas)) {
        while($factura = mysqli_fetch_assoc($facturas)) {?>


                <select class="selects" > 
                    <option value="3" data-price="
                    <?php
                    echo str_pad($boleta['folio'] + 1, 15, "0", STR_PAD_LEFT);
                    ?>">
                boleta</option>
                <option value="4" data-price="
                <?php
                echo str_pad($factura['folio'] + 1, 15, "0", STR_PAD_LEFT);
                ?>">factura</option>
                <option value="5" data-price="
                <?php
                echo str_pad($nota['folio'] + 1, 15, "0", STR_PAD_LEFT);
                ?>">nota de venta</option>
            </select>

            <input type="text" class="inputs" 
            value="<?php
            echo str_pad($boleta['folio'] + 1, 15, "0", STR_PAD_LEFT);
            ?>">

            <?php
        }
    }
    }
    ?>

它只是使用所有 3 个查询显示一个空白页面,但如果我使用 1 个查询,我会得到正确的结果 对此感到疯狂

【问题讨论】:

  • 你检查过你的服务器错误日志看它是否抛出错误?
  • $boletas[] $boleta; 中缺少某些内容
  • 在提问时更改基本代码无济于事,我还要说您所做的更改将使您的代码不太可能工作。

标签: php jquery html mysql database


【解决方案1】:

问题是mysql_fetch_assoc 使用上次mysqli_query 调用的结果。如果您想修复您的代码,您必须使用mysql_fetch_assoc 遍历第一个mysqli_query 的结果,将其存储在一个数组中,遍历该数组,然后执行内部mysqli_query,然后重复。

<?php
$boletas_query = mysqli_query($datacenter, "
    SELECT * FROM ventas 
    WHERE documento = 'boleta' 
    ORDER BY id DESC LIMIT 1");

$boletas = array();

while ($boleta = mysqli_fetch_assoc($boletas)) {
    $boletas[] $boleta;
}


$facturas_query = mysqli_query($datacenter, "
    SELECT * FROM ventas WHERE documento = 'factura' 
    ORDER BY id DESC LIMIT 1");

$facturas = array();

while ($factura = mysqli_fetch_assoc($facturas)) {
    $facturas[] = $factura;
}


$notas_query = mysqli_query($datacenter, "
    SELECT * FROM ventas 
    WHERE documento = 'nota' 
    ORDER BY id DESC LIMIT 1");

$notas = array();


while ($nota = mysqli_fetch_assoc($notas)) {
    $notas[] = $nota;
}

foreach ($boletas as $boleta) {
    ?>
    <?php
    foreach ($facturas as $factura) {
        ?>
        <?php
        foreach ($notas as $nota) {
            ?>


            <select class="selects" > 
                <option value="3" data-price="
                <?php
                echo str_pad($boleta['folio'] + 1, 15, "0", STR_PAD_LEFT);
                ?>">
            boleta</option>
            <option value="4" data-price="
            <?php
            echo str_pad($factura['folio'] + 1, 15, "0", STR_PAD_LEFT);
            ?>">factura</option>
            <option value="5" data-price="
            <?php
            echo str_pad($nota['folio'] + 1, 15, "0", STR_PAD_LEFT);
            ?>">nota de venta</option>
        </select>

        <input type="text" class="inputs" 
        value="<?php
        echo str_pad($boleta['folio'] + 1, 15, "0", STR_PAD_LEFT);
        ?>">

        <?php
    }
}
}
?>

但是我不建议这样做,因为您可以通过单个查询来实现您想要的,而且它在数据库上的效率要高得多。

此外,请在此处提问时缩进并格式化您的代码。我必须通过文本编辑器运行它来格式化它以便能够阅读它。

【讨论】:

  • 我添加了一个解决方案。
  • 我得到相同的空白页:(
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多