gpt4 book ai didi

PHP和MySQL动态查询只返回没有where子句的结果

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

我希望有人可以协助使用 PHP 进行动态查询。下面的第一页显示了 MySQL 中的许多项目。单击某个项目后,它会转到另一个页面,该页面查询数据库以显示所选产品的详细信息。显示用户可以选择的项目的页面工作正常,但显示单击的项目的页面仅在我删除 WHERE 子句时才有效,但当然它不再是动态的。错误语句表明语法不适合该版本,但它在其他页面上有效。使用 MySQL 5.6.17 和 PHP 5.5.12。

谁能看出我哪里出了问题吗?

--------------------------------

主页(按预期运行)

    <?php
ini_set('display_errors', '0');
$message = '';
$db=new MySQLi('localhost', 'someone', 'xxx','abc');
if ($db->connect_error) {
$message = $db->connect_error;
} else {
$sql = 'SELECT * FROM items';
$result = $db->query($sql);
if ($db->error) {
$message = $db->error;
}
}
?>
<!--other parts of the site--->
<?php if ($message) { ?>
<h2 class="inline_block">Sorry, there seems to be a problem.</h2>
<?php } else { ?>
<div>
<?php
$i = 0;
while ($row = $result->fetch_assoc()) {
if ($i % 4 === 0) { ?>
<div>
<ul>
<?php } ?>
<li> <a href="includes/details.php?id=<?php echo $row['itemID']; ?>"> <img src="img/<?php echo $row['image']; ?>" alt="<?php echo $row['alt']; ?>" height="150" width="150">
<p><?php echo $row['product']; ?></p>
<p class="reset">From $<?php echo $row['water']; ?></p></a> </li>
<?php $i++;
if ($i % 4 === 0) { ?>
</ul>
</div>
<?php } // end if
} // end of loop ?>
</div>
</div>
<?php } // end of page ?>
</div>
<!--other parts of the site--->

------------------------------------------------------------ ------------------

动态页面(返回 SQL 错误“您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行 '' 附近使用的正确语法”。第 1 行首先相同如下所示的行。这也用在上一页中,没有问题。当从 SQL 查询中删除 WHERE 子句时,它可以工作,但不再是动态的。)

    <?php
ini_set('display_errors', '0');
$message = '';
$db=new MySQLi('localhost', 'someone', 'xxx','abc');
if ($db->connect_error) {
$message = $db->connect_error;
} else {
$sql = 'SELECT * FROM items WHERE xitemID=' . $db->real_escape_string($_GET['xitemID']);
$result = $db->query($sql);
if ($db->error) {
$message = $db->error;
} else {
$row = $result->fetch_assoc();
}
}
?>
<!--other parts of the site--->

<ul>
<li><a href="../index.php">Home</a></li>
<li><a href="../things.php">Things</a></li>
<li><a href="mixeda.php">Mixeda</a></li>
<li><?php echo $row['product']; ?></li>
</ul>
</div>
<div id="col_1" role="main">
<?php if ($message) { ?>
<p> ERROR</p>
<?php echo "<p>$message</p>";
} else { ?>

<h2 class="inline_block"><?php echo $row['product']; ?></h2>
<p class="figure"><img src="../img/<?php echo $row['image']; ?>" alt="<?php echo $row['alt']; ?>" width="200" height="200">Price from $<?php echo $row['product']; ?></p>

</div>
<div id="col_2">
<h3>Details</h3>
<p><?php echo $row['details']; ?></p>
</div>
<?php } ?>
<!--other parts of the site--->

最佳答案

请注意,您需要在 xitemID='itemHere' 中的项目两边加上单引号:

$sql = "SELECT * FROM items WHERE xitemID='" . $db->real_escape_string($_GET['xitemID']) . "'";

只要定义了 $_GET['xitemID'] 就可以解决您的问题。

关于PHP和MySQL动态查询只返回没有where子句的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415014/

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