gpt4 book ai didi

PHP 无法加载,因为查询没有返回任何行

转载 作者:行者123 更新时间:2023-11-29 17:10:31 25 4
gpt4 key购买 nike

我有一个包含如下代码的 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 中> 我这样做,但它不满足 AKTIVAN = 1 那么它会显示但是如果我在 PROIZVOD_GRUPE 中有包含 PROIZVODID = 1 的行并且仍然不满足 ProizvodAKTIVAN = 1,它崩溃了

最佳答案

首先,您的脚本容易受到 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>
");
}
}
?>

关于PHP 无法加载,因为查询没有返回任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51905856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com