2016-12-09 11 views
0

PHPのクエリでデータベースにデータを挿入したいのですが、私はこのようなものを持っています。PHP imgをデータベースに挿入

$zp='INSERT INTO `user`(`name`, `password`, `avatar`) VALUES ("'.$_POST['login'].'","'.$_POST['password'].'")'; 

と私は3番目の値

<img src="$file_name.$file_type"/> 

に置きたい。しかし、私は

+0

BLOBイメージを保存するのではなく、そのパスを保存することをお勧めします。 –

+2

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Sammitch

答えて

0

はあなたがアップロード機能を作成する必要があり、かつ保存する方法PHPのクエリでこれを書くには考えていますあなたがイメージしているパスだけが保存されます。

データベースに、ファイルパス、mime、サイズのようなカラム名が少ないテーブルを作成します。

少し例:index.php

if(isset($_FILES['file']['name'])){ 
    $name = $_FILES['file']['name']; 
    $mime = $_FILES['file']['type']; 
    $size = $_FILES['file']['size']; 
    $tmp = $_FILES['file']['tmp_name']; 
    $path = 'uploads/' . $name; //maybe you should create the uploads/ folder before running the script 

    if(move_uploaded_file($tmp, $path)){ 
     $db = new PDO('mysql:host=localhost;dbname=your_db_name','your_db_user','your_db_pass'); 
     $stmt = $db->prepare('INSERT INTO your_table_name_here SET filepath=?,mime=?,size=?'); 
     $stmt->execute([$path,$mime,$size]); 
     echo 'File uploaded successfully!'; 
    } 
} 
?> 
<form action="index.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="submit" name="submit" value="Upload"> 
</form> 

次にあなたが保存されたすべてのパスをつかむと、あなたのイメージのためのsrc attrbuiteとして追加することができます。

//index.php 
$stmt = $db->prepare('SELECT filepath FROM your_table_name_here'); 
$stmt->execute(); 
while($row = $stmt->fetch()){?> 
    <img src="<?php echo $row['filepath']; ?>" alt="image"> 
<?php } 

しかし、これはあなたの学習の目的のためだけの超簡単なスクリプトであり、かつ安全ではないとして、このコードは、プロダクションモードで使用することはできません注意してください。

関連する問題