gpt4 book ai didi

php - 查询输出php代码

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

我正在关注一本有关 PhP 和 MySQL 的书,但以下代码无法正常工作:

<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
//short variables
$searchtype = $_POST['searchtype'];
$searchterm = trim($_POST['searchterm']);

echo $searchterm;

if(!$searchtype || !$searchterm) {
echo 'You have not entered search details.';
exit;
}

if(!get_magic_quotes_gpc()) {
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}

@ $db = new mysqli('localhost', 'root', '', 'books');

if(mysqli_connect_errno()) {
echo 'Error: could not connect to the database. Please try again later.';
exit;
} else {
echo "All right";
}

$query = "select * from books where ".$searchtype." like '%".$searchterm."%";
$result = $db->query($query);

$num_results = $result->num_rows;

echo "<p>Number of books found: ".$num_results."</p>";

for($i=0; $i < $num_results; $i++) {
$row = $result->fetch_assoc();
echo "<p><strong>".($i+1).". Title: ";
echo htmlspecialchars(stripslashes($row['title']));
echo"</strong><br />Author: ";
echo stripslashes($row['author']);
echo "<br /> ISBN: ";
echo stripslashes($row['isbn']);
echo "<br />Price: ";
echo stripslashes($row['price']);
echo "</p>";
}

$result->free();
$db->close();


?>
</body></html>

它输出:

Book-O-Rama Search Results

query($query); $num_results = $result->num_rows; echo "
Number of books found: ".$num_results."

"; for($i=0; $i < $num_results; $i++) { $row = $result->fetch_assoc(); echo "
".($i+1).". Title: "; echo htmlspecialchars(stripslashes($row['title'])); echo"
Author: "; echo stripslashes($row['author']); echo "
ISBN: "; echo stripslashes($row['isbn']); echo "
Price: "; echo stripslashes($row['price']); echo "

"; } $result->free(); $db->close(); ?>

我不明白为什么,而且开头的 echo $searchterm; 根本没有执行。附注我正在使用 Xampp localhost 运行脚本。

最佳答案

您的问题出在 SQL 查询上。我想补充一点,这让我差点落泪。

" like '%".$searchterm."%"

您在第一个 % 处打开了一个单引号,而在尾随 % 后没有关闭它。这会将其余代码转换为字符串。

除此之外,我强烈建议您阅读 This post on sanitizing input 。您的代码非常容易受到攻击,尤其是直接将经过清理的变量直接放入查询中。您应该使用PDO bound variables对于 SQL 查询中使用的任何变量。对于输出,您应该通过 htmlspecialchars() 运行它们(可能还有 strip_tags)。

我建议您选择一本有关 PHP/MYSQL 的最新书籍。你的代码让我想起了我在 2003 年购买的 Sams 在 24 小时内自学 PHP 的情况 - 没有考虑安全性,纯粹只考虑功能。

关于php - 查询输出php代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727287/

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