基于php变量的唯一图像URL

时间:2015-12-25 03:14:27

标签: php mysql

所以我有一个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缺乏经验,任何想法或输入都会受到赞赏!

1 个答案:

答案 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 statementsPDOprepared statements