mysql php - 数据没有完全进入数据库

时间:2015-01-20 14:18:52

标签: php mysql sql sql-insert

我目前正在建立一个网站,其中有一个可通过php和mysql访问的图库。当您在网站上查看时,图库会从mysql中获取代码,并从我的文件夹中获取图像(在计算机上)。

我遇到的问题是,当我上传图像(使用php)时会出现image_pathname,image_description(带有image_gallery数据库)也会出现,但是作者没有 - 而是出现了一个数字。

我认为这可能是我可以轻松解决的问题但是我已经在网站上工作了一段时间而且我的大脑已经炒了 - 假设它是不可能的。

这是我的表格语法:

CREATE TABLE images(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
image_pathname VARCHAR( 50 ) ,
image_author VARCHAR( 50 ) ,
image_description VARCHAR( 50 ) ,
genreID VARCHAR( 100 )
)

这是我的HTML:

<form method="post" action="upload_file.php" enctype="multipart/form-data">

            <p>
              Image Author:
            </p>
            <input type="text" name="image_author"/>

            <p>
              Please enter a decscription:
            </p>
            <input type="text" name="image_description"/>
            <p>
             Please upload an image.
            </p>
            <p>
              Photo:
            </p>
            <input type="hidden" name="size" value="350000">
            <input type="file" name="photo"> 


            <input TYPE="submit" name="upload" title="Add image/data to the Database" value="Add Image"/>
          </form>

这是我的php:

<?php

//This is the directory where images will be saved
$target = "images/";
$target = $target . basename( $_FILES['photo']['name']);

//This gets all the other information from the form
$name= (isset($_POST['image_author']));
$description= ($_POST['image_description']);
$pic=($_FILES['photo']['name']);


// Connects to your Database
mysql_connect("localhost", "root", "root") or die(mysql_error()) ;
mysql_select_db("image_gallery") or die(mysql_error()) ;

//Writes the information to the database
mysql_query("INSERT INTO images (image_author, image_description, image_pathname)
VALUES ('$name', '$description', '$pic')") ;

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{

//Tells you if its all ok
echo "The file has been uploaded, and your information has been added to the directory <p> <a href='upload.php'> Go back</a>";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

2 个答案:

答案 0 :(得分:3)

在将值分配给变量时,您错误地调用了isset()。结果是你得到一个布尔值,这是isset()重新调整的值而不是$_POST['image_author']的实际值。

 $name= (isset($_POST['image_author']));

应该是

$name= $_POST['image_author'];

仅供参考,您可以SQL injections并使用obsolete API。{/ p>

答案 1 :(得分:0)

您可以像这样分配表单变量并查看关于MYSQL API的 Jay Blanchard 的评论,而是使用MYSQLIPDO来帮助您编写SQL INJECTION免费代码。

//This gets all the other information from the form
$name= (isset($_POST['image_author']))? $_POST['image_author']:'';
$description= (isset($_POST['image_description']))? $_POST['image_description']:'';