代码截图:
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
require ('../../mysqli_oop_connect.php'); //Connect to the database.
$errors = array(); // Initialize an error array.
// Check for an isbn:
if (empty($_GET['isbn'])) {
$errors[] = 'You forgot to enter the ISBN-13.';
} else {
$isbn = $mysqli->real_escape_string(trim($_GET['isbn']));
}
if (empty($errors)) {
//Make the query:
$q = "SELECT * FROM books WHERE isbn=$isbn";
$r = $mysqli->query($q);
$num = $r->num_rows;
if ($num == 0) { // If it fails to run:
echo "<br /><br /><p>This book is currently not listed in our database. Would you like to add it?</p>\n";
//HERE IS WHERE IT NEEDS TO REDIRECT TO A PAGE THAT ALLOWS THE CONTENT TO BE ADDED TO THE DB LIKE REGISTER.PHP DOES.
} else { //If it suceeds then run the query:
echo '<h1>Is this your book?</h1>';
while ($row = $r->fetch_object()) { // POST DATA FROM DB.
echo '<img src="$row->image" height="100" width="100">' . '<br />' . $row->name . '<br />' . $row->isbn ;
其余代码只是关闭数据库连接。
我不知道该图标的含义或代码中的问题所在。 DB在表中设置了三列:image,isbn和name。目标是让本书显示从数据库中检索的数据。它根据查询显示数据库中的所有三个项目,但图像是其他内容。 HTML正在识别正在检索图像,因为当我只是执行$ row-&gt;图像时,它会发疯并发布随机的废话,因为它应该是在显示图像的时候。非常感谢任何帮助。
答案 0 :(得分:3)
echo '<img src="'.$row->image.'" height="100" width="100"><br />' . $row->name . '<br />' . $row->isbn ;
尝试这种方式,并且最好打印图像路径并检查它是否存在或是否存在,是的,您还可以检查图像元素并检查图像的路径。
在问题中,是否在db64中保存了图像链接或在base64中保存了图像数据。假设db具有图像链接,则给出答案。
答案 1 :(得分:1)
我会从你的评论中猜出你的图像存储在数据库中的'怪胎并发布随机废话',而不是你图像的路径。如果是这样,您就不能简单地回显<img>
标记中的图像数据。 src
属性需要一个URL,您可以通过以下两种方式之一创建该URL:创建一个脚本,该脚本使用适当的标头为图像提供服务,并使用该脚本的URL作为src
属性;或者,创建数据URI并在页面中包含数据。后者可能是最简单的,但可能会增加页面的加载时间。方法如下:
// base64 encode image data and prepend the header
$imgURL = "data:image/png;base64,".base64_encode($row->image);
echo '<img src="'.$imgURL.'" height="100" width="100">' .
'<br />' . $row->name . '<br />' . $row->isbn ;
注意 - 您需要更改dataURL标头以发送正确的图片类型:image/jpg
,image/png
等。
答案 2 :(得分:0)
您不能使用单引号进行字符串替换。它只会将文字$row->image
放在echo
:
echo '<img src="$row->image" height="100" width="100">' . '<br />' . $row->name . '<br />' . $row->isbn ;
请改为尝试:
echo "<img src='$row->image' height='100' width='100'>" . '<br />' . $row->name . '<br />' . $row->isbn ;
或者这个:
echo '<img src="' . $row->image . '" height="100" width="100">' . '<br />' . $row->name . '<br />' . $row->isbn ;
就个人而言,我更喜欢这样使用sprintf
:
echo sprintf('<img src="%s" height="100" width="100">', $row->image) . '<br />' . $row->name . '<br />' . $row->isbn ;
但最重要的是,为了让您的调试生活更轻松,我建议您将PHP代码格式化为更容易阅读:
echo sprintf('<img src="%s" height="100" width="100">', $row->image)
. '<br />'
. $row->name
. '<br />'
. $row->isbn
;
您的代码从一开始就越干净,就越容易发现缺陷。它们出现时的错误。