SQL - 插入INTO结果无效

时间:2015-03-11 13:49:48

标签: php mysql sql

我一直试图让这个INSERT正常工作,所以我处理了未定义的变量和索引问题,现在我觉得我差不多了。

以下是代码:


<?php
session_start();
require "../dbconn.php";

$username = $_SESSION['username'];

$query1 = "SELECT user_table.user_id FROM user_table  WHERE user_table.username ='".$username."'";    

$query2 = "SELECT department.department_id FROM department, user_table, inventory
       WHERE user_table.user_id = department.user_id
       AND department.department_id = inventory.department_id";

//Copy the variables that the form placed in the URL
//into these three variables
$item_id = NULL;
$category = $_GET['category'];
$item_name = $_GET['item_name'];
$item_description = $_GET['item_description'];
$item_quantity = $_GET['quantity'];
$item_quality = $_GET['quality'];
$item_status = NULL;
$order_date = $_GET['order_date'];
$invoice_attachment = NULL;
$edit_url = 'Edit'; 
$ordered_by = $username;
$user_id = mysql_query($query1) or die(mysql_error());
$department_id = mysql_query($query2) or die(mysql_error());
$price = $_GET['price'];
$vat = $_GET['vat%'];
$vat_amount = $_GET['vat_amount'];
$create_date = date("D M d, Y G:i");
$change_date = NULL;

//set up the query using the values that were passed via the URL from the form
$query2 = mysql_query("INSERT INTO inventory (item_id, category, item_name, item_description, item_quantity, item_quality, item_status, order_date,
invoice_attachment, edit_url, ordered_by, user_id, department_id, price,     vat, vat_amount, create_date, change_date VALUES(
'".$item_id."',
'".$category."',
'".$item_name."',
'".$item_description."',
'".$item_quantity."',
'".$item_quality."',
'".$item_status."',
'".$order_date."',
'".$invoice_attachment."',
'".$edit_url."',
'".$ordered_by."',
'".$user_id."',
'".$department_id."',
'".$price."',
'".$vat."',
'".$vat_amount."',
'".$create_date."',
'".$change_date."')")
or die("Error: ".mysql_error());
header( 'Location:../myorders.php');
?>

错误: 错误:SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在第2行'VALUES('','adasd','dsadsa','dsad','sadsad',''附近使用正确的语法

有谁能告诉我哪里出错了? :(

已经盯着这个3-5个小时了:(

3 个答案:

答案 0 :(得分:3)

您实际上并没有尝试插入任何数据到您的表中。您只能将字符串形式的查询制作并分配给变量。您需要使用函数mysql_query来实际运行代码。

如前所述,如果不为每列提供数据(按正确顺序),则还必须在MySQL查询中指定要插入数据的列。在这里,您可以查看MySQL insert syntax

我还建议您考虑使用MySQLiMySQL PDO扩展来与MySQL数据库进行通信,因为不推荐使用MySQL扩展。查看here以获取更多信息和比较。

答案 1 :(得分:1)

在这里,您只需将值分配给$ query var:

$query = "INSERT INTO inventory VALUES (
'".$item_id."',
'".$category."',
'".$item_name."',
'".$item_description."',
'".$quantity."',
'".$quality."',
'".$item_status."',
'".$order_date."',
'".$invoice_attachment."',
'".$edit_url."',
'".$ordered_by."',
'".$price."',
'".$vat."',
'".$vat_amount."',
'".$create_date."',
'".$change_date."')"
or die("Error: ".mysql_error());

您实际上并未运行查询。

尝试:

$query = mysql_query("INSERT INTO inventory (column_name1, column_name 2, column_name3 ... the column name for each field you insert) VALUES (
    '".$item_id."',
    '".$category."',
    '".$item_name."',
    '".$item_description."',
    '".$quantity."',
    '".$quality."',
    '".$item_status."',
    '".$order_date."',
    '".$invoice_attachment."',
    '".$edit_url."',
    '".$ordered_by."',
    '".$price."',
    '".$vat."',
    '".$vat_amount."',
    '".$create_date."',
    '".$change_date."')")
    or die("Error: ".mysql_error());

此外,您应该使用mysqli_ *或任何其他PDO,因为不推荐使用mysql_ *函数

答案 2 :(得分:0)

如果未插入所有列,则需要指定要插入的列。像这样:

INSERT INTO Table(Column1, Column6) VALUES (Value1, Value6)

您缺少INSERT中的列名