PHP不会在PHPmyAdmin中插入数据库

时间:2011-10-20 05:47:34

标签: php file-upload insert phpmyadmin

所以我一直在努力解决为什么在用户提交表单后我的“产品”没有上传到phpMyAdmin的情况下这个问题 - 该应用程序允许成员创建自己的产品...& ;我坚持的地方如下:我是一名登录用户,我在用户管理员的“列出产品”页面上。当我输入产品信息然后点击提交它不会发布产品&相关数据到phpmyadmin。我试图通过move_uploaded_file函数移动上传到文件夹的图像。任何帮助将不胜感激。所有代码应该在下面(数据库已连接,所有会话设置正确,我相信等):

来自create_product.php的表单(登录用户列出新产品的页面:

if (isset($_POST['product_name'], $_POST['product_description'])) {
$product_name = $_POST['product_name'];
$product_description = $_POST['product_description'];

$errors = array();

if (empty($product_name) || empty($product_description)) {
    $errors[] = "All Fields are required";
} else {
    if (strlen($product_name) > 55 || strlen($product_description) > 255) {
        $errors[] = "One or more fields contains too many characters";
    } 

}

if (!empty($errors)) {
    foreach ($errors as $error) {
        echo $error, '<br/>';
        }
    } else {
        create_product($product_name, $product_description);

        header("location: product.php?product_id='.$product_id.'");
        exit();
    }
}

<form action="" method="post" enctype="multipart/form-data">
        <p>Product Name:<br/><input type="text" name="product_name" maxlength="55" /></p>
        <p>Describe this Product:<br/><textarea name="product_description" rows="6" cols="35" maxlength="255"></textarea></p>

        <p>Upload a product profile pic:<br/><input type="file" name="fileField" id="fileField" /></p>
        <p><input type="submit" value="Create"></p>
    </form>

我的product.functions.php文件中的函数(包含在create_product.php文件中):

function create_product($product_name, $product_description) {
$product_name = mysql_real_escape_string(htmlentities($product_name));
$product_description = mysql_real_escape_string(htmlentities($product_description));

mysql_query("INSERT INTO `products` VALUES ('','".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '$product_name', '$product_description')");

$bmid = mysql_insert_id();
// place image in the folder
$newname = "$bmid.jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'],'uploads/$newname');
}

我相信我的问题可能来自图片上传,但我一直在努力解决这个问题...感谢您提供的任何帮助......

2 个答案:

答案 0 :(得分:0)

这有一些问题。首先是insert语句。你不需要`,这是MySQL特有的而不是必需的。其次,您的ID字段可能是空值。将您的insert语句更改为(当然使用您的列名称):

 INSERT INTO products (member,date_time,prod_name,prod_desc) VALUES ('".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '$product_name', '$product_description')

这会导致您的文件无法上传且数据库无法更新。您可以尝试并且可能导致一些问题的另一件事是从字符串中删除php变量并将它们连接在一起。 newname变量应写为。

$location = "uploads/" . $bmid . ".jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'],$location);

如果这不起作用,那么您将需要输出SQL以及它正在经历的任何错误。

$SQL = "INSERT INTO products (member,date_time,prod_name,prod_desc) VALUES ('".$_SESSION['member_id']."', UNIX_TIMESTAMP(), '".$product_name."', '".$product_description".')";
$result = mysql_query($SQL);
if(!$result) echo "SQL: ", $SQL, "<br />ERROR: ", mysql_error();

答案 1 :(得分:0)

问题出在您的INSERT查询中,您忘记将列名称放在VALUES()之前INSERT INTO table_name (columns_name) VALUES (values);