Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用PDO将图像上传到mysql数据库?_Php_Mysql_Database_Pdo - Fatal编程技术网

PHP使用PDO将图像上传到mysql数据库?

PHP使用PDO将图像上传到mysql数据库?,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我有一个数据库设置,并试图上传一个图像到它。该数据库称为“blob”,有3个字段。id、名称和图像,图像设置为blob。当试图上传图像时,我得到了一个我不确定的错误。下面是我的代码 <?php include ("dbConnect.php"); ?> <form action="imageuploadtest.php" enctype="multipart/form-data" method="post"> <input name="image" type="f

我有一个数据库设置,并试图上传一个图像到它。该数据库称为“blob”,有3个字段。id、名称和图像,图像设置为blob。当试图上传图像时,我得到了一个我不确定的错误。下面是我的代码

<?php
include ("dbConnect.php");
?>

<form action="imageuploadtest.php" enctype="multipart/form-data" method="post">
<input name="image" type="file"><input name="submit" type="submit" value="Upload">
</form>

<?php 

if(isset($_POST['submit']))
{

  $imageName = $_FILES["image"]["name"];
  $imageData = file_get_contents($_FILES["image"]["tmp_name"]);
  $imageType = $_FILES["image"]["type"];

  if(substr($imageType,0,5)=="image")
  {
     $dbQuery = $db->prepare("INSERT INTO blob ( name, image) VALUES ('$imageName', '$imageData')");
     $dbQuery->execute();
  }
  else
  {
   echo "only images are allowed";
  } 
}
?>
任何帮助都将不胜感激。谢谢


编辑:现在已将我的表名从blob更改为imgupload,但仍然收到相同的错误消息?

blob
是MySQL保留字

将表格重命名为其他名称,或在其周围使用记号:

INSERT INTO `blob` ...


注:通常最好将文件存储在文件夹中并引用该文件,而不是将二进制数据存储在表中。这最终会显著增加数据库大小。

blob
是MySQL的保留字

将表格重命名为其他名称,或在其周围使用记号:

INSERT INTO `blob` ...


注:通常最好将文件存储在文件夹中并引用该文件,而不是将二进制数据存储在表中。这最终会显著增加数据库大小。

这与blob无关。这是关于二进制数据的。尝试使用该行(但也可能不起作用):


此外,您的查询不安全(对于黑客),您应该清理数据库中的所有输入。PDO非常支持预先准备好的语句。

它与blob无关。这是关于二进制数据的。尝试使用该行(但也可能不起作用):


此外,您的查询不安全(对于黑客),您应该清理数据库中的所有输入。PDO非常支持预先准备好的语句。

blob
是mysql中的保留字。您必须将表名用反勾号括起来。最好避免同时使用保留字作为表名或列名。您没有正确使用
PDO
,并且会以使用它的方式受到SQL注入的影响。如果确实要使用“blob”作为表名,请在查询中将其更改为“INSERT INTO`blob`…”对所有人来说^-我在发表评论之前大约4.5分钟就准备好了我的答案,我想在点击“发布答案”按钮之前确保情况属实并进行了研究;-)我的答案不是从评论中得出的。注:通常最好将文件存储在文件夹中并引用该文件,而不是将二进制数据存储在表中。这最终会显著增加数据库大小。
blob
是mysql中的保留字。您必须将表名用反勾号括起来。最好避免同时使用保留字作为表名或列名。您没有正确使用
PDO
,并且会以使用它的方式受到SQL注入的影响。如果确实要使用“blob”作为表名,请在查询中将其更改为“INSERT INTO`blob`…”对所有人来说^-我在发表评论之前大约4.5分钟就准备好了我的答案,我想在点击“发布答案”按钮之前确保情况属实并进行了研究;-)我的答案不是从评论中得出的。注:通常最好将文件存储在文件夹中并引用该文件,而不是将二进制数据存储在表中。这最终会大大增加您的数据库大小。谢谢,这似乎是可行的。还将研究如何使查询更安全。@OUDK记住将此答案标记为正确,以便将其标记为已解决。以下是你可能不知道的方法。谢谢,这似乎有效。还将研究如何使查询更安全。@OUDK记住将此答案标记为正确,以便将其标记为已解决。这是一种方法,以防你不知道。
$db->prepare("INSERT INTO blob ( name, image) VALUES ('$imageName', " . $db->quote($imageData) . ")");