2014-02-27 5 views
0

hy! 이 내 HTML 코드입니다 ....PHP에서 정의되지 않은 색인 논리 오류

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Add New Templete</title> 
    <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
    <?php include 'side.php'; ?> 
    <div class="main"> 
    <h2>Add New Templete</h2> 
    <form method="post" action="add.php" enctype="multipart/form-data"> 
     <table border="1px solid"> 
     <tr> 
     <td>Templete Name:</td><td><input type="text" name="temp_name"></td></tr> 
     <tr> 
     <td>Templete Category</td><td><input type="text" name="category"></td></tr> 
     <tr> 
     <td>Templete Image</td><td><input type="file" name="image"></td></tr> 
     <tr> 
     <td>Templete Discription</td><td><input type="text" name="decp"></td></tr> 
     <tr> 
     <td>Templete Quantity</td><td><input type="text" name="qty"></td></tr> 
     <tr> 
     <td>Templete Price</td><td><input type="text" name="price"></td></tr> 
     <tr> 
      <td></td> 
     <td>  
     <input type="submit" value="ADD"> 
     </td> 
     </tr> 
     </table> 
    </form> 

</div> 
</body> 
</html> 

는이, 내 PHP 코드

<?php 
include 'connection.php'; 
$name=$_POST['temp_name']; 
$cat=$_POST['category']; 
$image=$_POST['image']; 
$desc=$_POST['decp']; 
$qty=$_POST['qty']; 
$price=$_POST['price']; 
$qry="INSERT INTO templetes(templete_name,category,image,description,quantity,price)VALUES('$name','$cat','$image','$desc','$qty','$price')"; 
$res=mysql_query($qry,$con); 
if($res) 
{ 

    echo "record inserted"; 
} 
mysql_close($con); 
?> 

모든 일을 데이터가 데이터베이스에 저장되지만 이미지가 데이터베이스에 저장되지 않습니다 괜찮이다 ".... undefined index image on ....... ...."는 정의되지 않은 색인 오류가 표시됨을 의미합니다. 모든 데이터는 이미지를 제외하고 저장됩니까?

+0

데이터베이스에 어떤 것을 저장하려고합니까? 'image'는 파일이므로, 그것의 정보는'$ _POST'가 아닌'$ _FILES'에 저장됩니다. –

+1

P. 이 코드는 * 안전하지 못하다. 실제 웹 사이트에서는 사용하지 말기 바란다. 더 이상 사용되지 않는 mysql_ * 함수를 MySQLi 또는 PDO로 전환해야한다. 또한 사용자 입력으로 SQL 쿼리를 실행하는 가장 안전한 방법 인 "준비된 명령문"에 대해서도 알아야합니다. –

답변

0

이 시도 :

$image=$_FILES['image']; 
+0

'$ _FILES [ 'image']'는 (는) FYI의 배열입니다. –

+0

예. 이 var에서 필요한 데이터를 가져올 수 있습니다. –

+0

http://www.w3schools.com/php/php_file_upload.asp –

0

$_POST['image']; 당신은 서버 디렉토리에 업로드 된 파일을 이동 move_uploaded_file 기능을 사용한다 는 또한

$_FILES['image'] 

사용하십시오 $_POST에서 파일을 얻을 수 없습니다.

move_uploaded_file($_FILES['image']['tmp_name'], './you_dir_path'.$_FILES['image']['name']) 
+0

'$ _FILES [ 'image']'는 (는) FYI의 배열입니다. –

+0

@RocketHazmat 감사합니다. 나는 그가 이해할 수 있기를 바랍니다. – Girish

1
$_POST['image']; 

당신이

$_FILES['image'] 

를 사용하고 테이블에 이미지를 삽입하는대로하십시오 $ _POST에서 파일을 얻을 수 없으므로, 문자열에서 2 진수로 변환되어야합니다. 여기에 BLOB 또는 대형 BLOB.but해야 데이터베이스의 이미지 필드의 데이터 형식을 기억

<?php 
include 'connection.php'; 
$name=$_POST['temp_name']; 
$cat=$_POST['category']; 
$image=$_FILES['image']; 
$desc=$_POST['decp']; 
$qty=$_POST['qty']; 
$price=$_POST['price']; 
$imgData =addslashes (file_get_contents($_FILES['image']['tmp_name']));; 
$qry="INSERT INTO  templetes(templete_name,category,image,description,quantity,price)VALUES('$name' ,'$cat','{$imgData}','$desc','$qty','$price')"; 
$res=mysqli_query($con,$qry); 
if($res) 
{ 
    echo "record inserted"; 
} 
mysqli_close($con); 
?> 

당신이 -

connection.php

<?php 
$con = mysqli_connect("localhost", "root", "", "todo"); 
if (!$con) { 
echo "Error: Unable to connect to MySQL." . PHP_EOL; 
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; 
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; 
exit; 
} 
?> 

과은 add.php에 대한 솔루션입니다 이 일이 가장 안전하고 멋진 방법이 아님을 기억하십시오.

관련 문제