使用PHP将图像路径插入MySQL表

时间:2015-11-09 00:37:17

标签: php mysql image

我正在尝试使用PHP和MySQL创建一个基本表单来列出网站上的库存。当我在stackoverflow上关注一些指南时,我不断收到错误。任何帮助将不胜感激。

我的问题是:当我通过PHP表单使用它时,我的插入语句仍然失败,但是当我通过phpMyAdmin执行它时,它可以工作。我如何找出错误的位置以及如何解决它。

形式:

<form action="add.php" method="post" enctype="multipart/form-data">
Item Type: <input type="text" name="type"  /><br>
Description: <input type="text" name="description"/><br>
Price: <input type="text" name="price"  /><br>
Date: <input type="text" name="date" /><br>
Pic:<input type="file" name="image"> <br/>
<input type="submit" >
</form>

add.php:

<?php 
$type = $_POST['type'];
$desc = $_POST['description'];
$price = $_POST['price'];
$date = $_POST['date'];
$file = $_FILES['image']['tmp_name'];

 $image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
$image_size = getimagesize ($_FILES['image']['tmp_name']);


$host = "localhost";
$user = "root";
$password = "";

$cnn = mysql_connect ( $host, $user, $password );
mysql_select_db('inventory');

$insert = mysql_query("INSERT INTO 'newitems' ('ID', 'ItemType', 'Description', 'Price', 'Date', 'Pic')VALUES ('','$type','$desc','$price','$date', '{$image}')");

if (!mysql_query($insert)) { 
    echo "Something went wrong! :(";
    echo '<img src="data:image/jpeg;base64,' . base64_encode( $image ) . '" />';
}


?>

Table Updated with Auto-Number

1 个答案:

答案 0 :(得分:0)

如果该架构中的.nav-tabs .badge{ position: absolute; top: -10px; right: -10px; background: red; } 列具有ID约束,则难怪第二次查询将失败,因为您要插入每一行相同的ID(UNIQUE)。请改用AUTO_INCREMENT,让dbms分配ID。

关于您的代码的重要信息

此外,您了解代码中的一些关键问题可能至关重要。

  1. 您使用的是deprecated extension for talking to your mysql database
  2. 使用4
  3. ,您的代码为vulnerable to SQL injection
  4. 你真的不应该在数据库中存储图像
  5. 您不应该在RDBMS

    中存储二进制数据的原因
    1. 文件系统在存储二进制数据方面更快/更好
    2. 您不必在PHP中携带blob数据,以便用户节省CPU和内存
    3. 分离webhost和dbhost,在数据库连接上来回移动blob在计算和带宽方面会很昂贵
    4. 单点故障(即使主/从复制,您将导致大规模复制滞后),其中有更便宜的冗余解决方案,如CDN