2

这是我的错误。我不知道为什么它不起作用。我检查了所有部件,但找不到错误。

注意:未定义索引:第 27 行 C:\xampp\htdocs\Final\places\Ressave.php 中的图像

这是我传递输入名称的html代码:

<form class="form-horizontal" action="Ressave.php" method="POST" autocomplete="on">
<div class="well">
   <legend>Photos</legend>
      <div class="control-group">
         <label class="control-label">Upload Photo: </label>
             <div class="controls">
                   <input name="image" type="file" />
             </div>   
     </div>
</div>

            <div class="form-actions">

              <button type="submit" class="btn btn-primary">Submit</button>

              <button type="button" class="btn">Cancel</button>

            </div>

        </form>

Ressave.php 在这里,无法在此处接收名称,因此发生错误.....

<?php
{       //  Secure Connection Script
    include('../Secure/dbConfig.php'); 
    $dbSuccess = false;
    $dbConnected = mysql_connect($db['hostname'],$db['username'],$db['password']);

    if ($dbConnected) {     
        $dbSelected = mysql_select_db($db['database'],$dbConnected);
        if ($dbSelected) {
            $dbSuccess = true;
        } else {
            echo "DB Selection FAILed";
        }
    } else {
            echo "MySQL Connection FAILed";
    }
    //  END Secure Connection Script
}
if(! $dbConnected )
{
  die('Could not connect: ' . mysql_error());
}


{               // File Properties

$file = $_FILES['image']['tmp_name'];   //Error comes from here(here is the prob!)


if(!isset($file))

    echo "Please Choose an Image.";

else  {
        $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));

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

        if($image_size == FALSE)
            echo "That is not an image.";
        else 
        {
                $lastid = mysql_insert_id();
                echo "Image Uploaded.";             
        }
}

}

{           //join the post values into comma separated 

    $features = mysql_real_escape_string(implode(',', $_POST['features']));
    $parking = mysql_real_escape_string(implode(',', $_POST['parking']));   
    $noise = mysql_real_escape_string(implode(',', $_POST['noise']));       
    $good_for = mysql_real_escape_string(implode(',', $_POST['good_for']));
    $ambience = mysql_real_escape_string(implode(',', $_POST['ambience']));
    $alcohol = mysql_real_escape_string(implode(',', $_POST['alcohol']));


}


$sql =  "INSERT INTO prestaurant ( ResName, Rating, Food_serve, Features, Parking, noise, Good_For, Ambience, Alcohol, Addition_info, Name, Address1, Zipcode1, Address2, Zipcode2, Address3, Zipcode3, City, Mobile, phone1, phone2, phone3, phone4, Email1, Email2, Fax, Website, image)". 
        "VALUES ('$_POST[restaurant_name]','$_POST[star_rating]','$_POST[food_served]','$features','$parking','$noise','$good_for','$ambience','$alcohol','$_POST[description]','$_POST[name]','$_POST[address1]','$_POST[zipcode1]','$_POST[address2]','$_POST[zipcode2]','$_POST[address3]','$_POST[zipcode3]','$_POST[city]','$_POST[mobile]','$_POST[phone1]','$_POST[phone2]','$_POST[phone3]','$_POST[phone4]','$_POST[email1]','$_POST[email2]','$_POST[fax]','$_POST[url]','$image')";


mysql_select_db('place');
$retval = mysql_query( $sql );
if(! $retval )
{    
  die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($dbConnected);
?>
4

4 回答 4

4

如果文件未上传,$_FILES 数组将为空。具体来说,如果文件image没有上传,$_FILES['image']则不会设置。

所以

$file = $_FILES['image']['tmp_name'];   //Error comes from here(here is the prob!)

应该:

if(empty($_FILES) || !isset($_FILES['image']))

更新

您还会遇到问题,因为您缺少enctype表单上的属性:

<form class="form-horizontal" action="Ressave.php" method="POST" autocomplete="on" enctype="multipart/form-data">
于 2013-09-11T17:26:19.003 回答
3

为了能够处理表单中的文件,您需要添加 enctype 属性。

<form method='POST' enctype='multipart/form-data' >
于 2013-09-11T17:45:21.550 回答
0

嘿,我猜您忘记了表单 enctype="multipart/form-data" 中的一个重要设置,此选项在与文件(例如图像文件等)一起使用时使用

<form name="image" method="post" enctype="multipart/form-data">

除此之外,您可以使用以下选项来提取文件的内容

$tmp_img_path = $_FILES['image']['tmp_name'];
$img_name = $_FILES['image']['name'];

要打印文件的所有内容,请使用:

print_r($_POST['image']);
于 2013-09-11T17:44:15.367 回答
0

这是我成功将数据插入 mysql 并从数据库中检索的代码。

“索引.PHP”

<html>
<head>
<title>PHP & MySQL: Upload an image</title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
File: <input type="file" name="image" /><input type="submit" value="Upload" />
</form>

<?php
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("registrations") or die(mysql_error());
if(!isset($_FILES['image']))
{
echo 'Please select an image.';
}
else {
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
echo $_FILES['image']['tmp_name'];
$image_name = addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);

if($image_size==FALSE){
echo "That's not an image.";
} else {
if(!$insert = mysql_query("INSERT INTO test_image VALUES ('','$image_name','$image')"))
     {
 echo "Problem uploading image.";
 } else {
  $lastid = mysql_insert_id();
  echo "Image uploaded.<p />Your image:<p /><img src=get.php?id=$lastid>";
  }
}

  }
?>
</body>
</html>

这是get.PHP

<?php
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("registrations") or die(mysql_error());
$id = addslashes($_REQUEST['id']);
$image = mysql_query("SELECT * FROM test_image WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image = $image['image'];
header("Content-type: image/jpeg");
echo $image;
?>

注意:- 请相应地更改您的数据库和表名。谢谢,Santanu

于 2014-05-18T06:16:33.137 回答