PHP不会加载,因为查询不返回任何行

时间:2018-08-18 06:16:37

标签: php mysql

我的php文件的代码如下:

$sql = "SELECT Proizvod.PROIZVODID, Proizvod.NAZIV, Proizvod.SLIKA
FROM PROIZVOD_GRUPE
LEFT JOIN Proizvod ON PROIZVOD_GRUPE.PROIZVODID = Proizvod.PROIZVODID WHERE PROIZVOD_GRUPE.PROIZVOD_GRUPAID = 1 AND AKTIVAN = 1;";

问题是第二行,如果它返回0行,则会使php文件崩溃。当我删除第二行时,我的php正常加载。

该文件的完整代码为:

<?php
    require('../Php/ConfigBaza.php');
$sql = "SELECT Proizvod.PROIZVODID, Proizvod.NAZIV, Proizvod.SLIKA
FROM PROIZVOD_GRUPE
LEFT JOIN Proizvod ON PROIZVOD_GRUPE.PROIZVODID = Proizvod.PROIZVODID WHERE PROIZVOD_GRUPE.PROIZVOD_GRUPAID = 1 AND AKTIVAN = 1;";

    $result = $mysqli->query($sql);

    if($result->num_rows < 1)
    {
        echo("Doslo je do greske prilikom ucitavanja proizvoda!");
        die();
    }
    else
    {

        echo("
        <div id='overlay' style='display: none; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: 999; background-color: hsla(0, 0%, 50%, 0.39);'>
            <div id='kolicina_overlay' style='display: none; position: fixed; width: 500px; height: 110px; margin-top: -55px; margin-left: -150px; top: 50%; left: 50%; text-align: center; background-color: #2196F3; z-index: 1000'>
                <p style='font-weight: bolder'>Unesite zeljenu kolicinu!</p>
                <input type='number' value='1' style='width: 50px'>
                <div id='kolicina_potvrdi_button' style='padding: 10px; color: white;' onclick='UnesiKolicinu()'>Potvrdi</div>
            </div>
        </div>
        ");
        while($proizvod = mysqli_fetch_assoc($result))
        {
            $pid = $proizvod['PROIZVODID'];
            $naziv = $proizvod['NAZIV'];
            $slika = $proizvod['SLIKA'];
            $rabat = $proizvod['POPUST'];

            if(!isset($slika) || empty($slika))
            {
                $slika = "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/No_image_available.svg/600px-No_image_available.svg.png";
            }
            echo("
                <div class='proizvod_Box' id='$pid' onclick='IdiNaProizvod(id)'>
                    <div class='proizvod_Naslov'>
                        <p>$naziv</p>
                    </div>
                    <div class='proizvod_Slika'>
                        <img src='$slika'>
                    </div>
                </div>
            ");
        }
    }
?>

那为什么会发生以及如何预防呢?

我遇到的是,假设我的PROIZVODID = 1和表PROIZVOD_GRUPE内没有记录,但是在Proizvod内却有记录,{{1} 1}},然后如果我在AKTIVAN = 1内有PROIZVODID = 1的行但仍未与PROIZVOD_GRUPE的{​​{1}}相遇,它将显示崩溃

1 个答案:

答案 0 :(得分:0)

首先,您的脚本容易受到XSS攻击。我看不到使用htmlentities或htmlspecialchars()函数将输出变量转义的位置。请始终在生产中使用 error_reporting(0); 在屏幕上隐藏您的php错误通知

您的问题似乎是您指定的代码行中的mysqli_connection参数。

根据我的联系,我对此进行了更改

$result = $mysqli->query($sql);

$result = mysqli_query($conn, $sql);

要进行测试,请按如下所示创建表并将其插入

create table Proizvod(id int primary key auto_increment, PROIZVODID varchar(100), NAZIV varchar(100), SLIKA varchar(100)
 ,AKCIJSKI_ARTIKAL varchar(100), AKTIVAN varchar(100),
POPUST varchar(100));

insert into Proizvod(PROIZVODID,NAZIV,SLIKA,AKCIJSKI_ARTIKAL,AKTIVAN,POPUST)values
('pp','naz','sik','1','1','image.png');




<?php

$dbhost = 'localhost:3306';
         $dbuser = 'root';
         $dbpass = '';
         $dbname = 'angular';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);

         if(! $conn ) {
            die('Could not connect: ' . mysqli_error());
         }
         echo 'Connected successfully<br>';


    $sql = "SELECT PROIZVODID, NAZIV, SLIKA FROM Proizvod WHERE AKCIJSKI_ARTIKAL = 1 AND AKTIVAN = 1;";

    //$result = $mysqli->query($sql);
 $result = mysqli_query($conn, $sql);

    if($result->num_rows < 1)
    {
        echo("Doslo je do greske prilikom ucitavanja proizvoda!");
        die();
    }
    else
    {

        echo("
        <div id='overlay' style='display: none; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: 999; background-color: hsla(0, 0%, 50%, 0.39);'>
            <div id='kolicina_overlay' style='display: none; position: fixed; width: 500px; height: 110px; margin-top: -55px; margin-left: -150px; top: 50%; left: 50%; text-align: center; background-color: #2196F3; z-index: 1000'>
                <p style='font-weight: bolder'>Unesite zeljenu kolicinu!</p>
                <input type='number' value='1' style='width: 50px'>
                <div id='kolicina_potvrdi_button' style='padding: 10px; color: white;' onclick='UnesiKolicinu()'>Potvrdi</div>
            </div>
        </div>
        ");
        while($proizvod = mysqli_fetch_assoc($result))
        {
            $pid =htmlentities($proizvod['PROIZVODID'], ENT_QUOTES, "UTF-8");
            $naziv = htmlentities($proizvod['NAZIV'], ENT_QUOTES, "UTF-8");
            $slika = htmlentities($proizvod['SLIKA'], ENT_QUOTES, "UTF-8");
            //$rabat = htmlentities($proizvod['POPUST'], ENT_QUOTES, "UTF-8");



            if(!isset($slika) || empty($slika))
            {
                $slika = "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/No_image_available.svg/600px-No_image_available.svg.png";
            }
            echo("
                <div class='proizvod_Box' id='$pid' onclick='IdiNaProizvod(id)'>
                    <div class='proizvod_Naslov'>
                        <p>$naziv</p>
                    </div>
                    <div class='proizvod_Slika'>
                        <img src='$slika'>
                    </div>
                </div>
            ");
        }
    }
?>