我一直试图让这个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个小时了:(
答案 0 :(得分:3)
您实际上并没有尝试插入任何数据到您的表中。您只能将字符串形式的查询制作并分配给变量。您需要使用函数mysql_query来实际运行代码。
如前所述,如果不为每列提供数据(按正确顺序),则还必须在MySQL查询中指定要插入数据的列。在这里,您可以查看MySQL insert syntax。
我还建议您考虑使用MySQLi或MySQL 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中的列名