php中未定义的索引逻辑错误

时间:2014-02-27 16:41:25

标签: php html mysql

HY! 这是我的HTML代码......

<!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);
?>

每件事都很好,数据将存储在数据库中,但图像不存储在数据库中,它表示“....... line ....上的未定义索引图像”意味着它将显示未定义的索引错误。除图像外,所有数据都会存储?

3 个答案:

答案 0 :(得分:1)

 $_POST['image'];

你无法在$ _POST中获取文件,请使用

 $_FILES['image']

当您将图像插入表格时,必须将其从字符串转换为二进制。这是您的解决方案 -

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

<?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);
?>

记住数据库中图像字段的数据类型应该是BLOB或大BLOB。但请记住,这不是最安全或最酷的方式来完成这项工作。

答案 1 :(得分:0)

$_POST['image'];您无法在$_POST中获取文件 请使用

$_FILES['image']

此外,您应该使用move_uploaded_file函数在服务器目录上移动上传的文件。

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

答案 2 :(得分:0)

试试这个:

$image=$_FILES['image'];