所以我有一个mySQL数据库,包含超过800个blob图像和唯一的数值。我的目标是使用php文件访问图像和数字,以根据数字或“carno”在不同的页面上显示每个图像。
Ex:pl0x.net/image.php/?carno=500会显示数据库中的图像,其中“carno”sql变量等于500
我在一周前使用这个旧代码进行了这项工作:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$conn = mysql_connect(".....");
if(!$conn)
{
echo mysql_error();
}
$db = mysql_select_db("....", $conn);
if(!$db)
{
echo mysql_error();
}
$carno = $_GET['carno'];
$q = "SELECT carphoto,carphototype FROM carmodelpictures where carno='$carno'";
$r = mysqli_query("$q",$conn);
if($r)
{
$row = mysql_fetch_array($r);
$type = "Content-type: ".$row['carphototype'];
header($type);
echo $row['carphoto'];
}
else
{
echo mysql_error();
}
?>
从我的webhost更新后,此代码停止工作,所以我一直在尝试复制它而没有错误。
目前我有一些代码可以显示我的所有885个图像,但是当我右键单击并选择“在新标签中打开图像”时,网址只是“数据:”
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$conn = mysqli_connect("......");
if(!$conn)
{
echo mysql_error();
}
$q = "SELECT * FROM carmodelpictures";
$r = mysqli_query($conn, $q);
if($r)
{
while($row=mysqli_fetch_array($r))
{
$result=mysqli_fetch_array($r);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['carphoto'] ).'"/>';
}
}
?>
对于php和html缺乏经验,任何想法或输入都会受到赞赏!
答案 0 :(得分:3)
&#34;我在一周前使用这个旧代码工作:&#34; (mysql代码)。
如果您的mysql_
方法有效,请使用您正在使用的内容,只需将i
添加到需要数据库连接并使用mysqli_
连接的功能中。您还要将mysql_error()
与mysqli_
混合在一起并且无法正常工作。
需要读为mysqli_error($conn)
。
旁注:您的第一段代码包含$r = mysqli_query("$q",$conn);
,我发现很难相信它确实有用,因为您还要混合MySQL API(mysql_connect()
进行连接,然后{{1}用...查询。除非那是你的错字。
那应该是mysqli_query()
。
然后这是另一个(贡献)原因,它也不起作用$r = mysql_query($q,$conn);
,你也在这里混合使用MySQL API。它需要在$db = mysql_select_db("....", $conn);
旁边添加i
,并且首先是连接(在mysqli _中)。
那应该是mysql_
(但我已经从下面的重写中删除了它,而是使用了所有4个参数)。
我很惊讶错误报告并没有向您提出任何相关信息,或者您没有将其包含在您的问题中。
这是重写:
$db = mysqli_select_db($conn, "your_db");
但是,您目前的代码向SQL injection开放。使用mysqli_*
with prepared statements或PDO与prepared statements。