0

编辑:

我将表名从“新订单”更改为“订单”,并且没有语法错误。它发布到表中,但是它没有发布整数值。它发布的唯一内容是零(0)。

我尝试在变量周围添加双引号,即。“.$长度。” 但这给了我和以前一样的错误。所以这是一个语法错误,但我不知道如何修复它。

谢谢大家的快速回答。非常感谢您的帮助。太感谢了。

原来的:

我一直在尝试更新 MySQL 数据库中的简单表。我所有诊断此问题的尝试都失败了,并且我不断收到相同的错误消息:

无效查询:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在“订单(长度、宽度、颜色、数量、总计)值(''、''、''、''、'')'附近使用1

我尝试修复查询,检查以确保所有变量都匹配(甚至在表单上),我什至重写了几次查询;习惯使用sprintf

现在我来找你。我知道您可以帮助我,我将不胜感激(:

这是代码:

<?php
require("addrow_info.php");

// Gets data from URL parameters
$length = $POST['length'];
$width = $POST['width'];
$color = $POST['color'];
$quantity = $POST['quantity'];
$total = $POST['total'];

// Opens a connection to a MySQL server
$connection=mysql_connect ("localhost", $username, $password);
if (!$connection) {
  die('Not connected : ' . mysql_error());
}

// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}

// Insert new row with user data
$query = "INSERT INTO new orders (length, width, color, quantity, total ) VALUES     ('$length', '$width', '$color', '$quantity', '$total')";

$result = mysql_query($query);

if (!$result) {
die('Invalid query: ' . mysql_error());

mysql_close();
}

?>

这是表格:

<form action="addrow.php" method="post">

Size(inches)<br>Length<input type="text" name="length" id="length" size="2" class="num">
      Width<input type="text" name="width" id="width" size="2" class="num"><br>
Quantity<input type="text" name="quantity" size="2" class="num" id="quantity">
<input type="hidden" class="num" value="0.20"><br><br>


<label>Total:</label><div id="tot" class="tot"     style="width:100px;height:20px;border:1px solid black;"><br><br><br>
<input type="text" class="tot" name="total">
</div>
<input type="submit" name="submit" value="submit">
</form>
4

5 回答 5

1

您在访问表名时遇到问题

INSERT INTO new orders
          -----^

不能在这里有空间。

使固定

将您的表名更改为 saynew_orders或数据库中的内容。

并访问您的 PHP 代码,例如 INSERT INTO new_orders

免责声明:停止使用 mysql_* 函数,因为它们已被弃用。改用 MySQLi 或 PDO。

于 2013-11-06T08:43:00.960 回答
0

正确的:

$query = "INSERT INTO orders (length, width, color, quantity, total ) VALUES     ('$length', '$width', '$color', '$quantity', '$total')";
于 2013-11-06T08:44:40.780 回答
0

关于您的代码的“一个”问题还有其他答案。

这是另一个需要解决的非常重要的问题。

$POST

这是(称为超全局,并且符号后的(必需)下划线$丢失。

将它们全部更改为$_POST

你有:

$length = $POST['length'];
$width = $POST['width'];
$color = $POST['color'];
$quantity = $POST['quantity'];
$total = $POST['total'];

改成:

$length = $_POST['length'];
$width = $_POST['width'];
$color = $_POST['color'];
$quantity = $_POST['quantity'];
$total = $_POST['total'];

注意到您的编辑后:

尝试把你的$length喜欢这样'".$length."', '".$width."',等等,你还需要检查你的列设置为:

  • 字符
  • VARCHAR
  • INT
  • 小灵通
  • 小音
  • 其他。

它有所作为。对它们中的每一个进行实验。

另外,您如何将您的值输入到您的输入中,您是否使用"英寸(例如)?这也可能是一个因素。

一个选项是使用预设数字并让用户从下拉选择、复选框或单选按钮中进行选择。

如果您要使用预设数字,请不要使用点或空格,因为这肯定会引发错误;如果可能,请使用连字符或下划线。

于 2013-11-06T14:50:33.580 回答
0

如果您的列是数字的,那么它们将不需要引用。你的表名也有问题new order这应该是一个字

于 2013-11-06T08:43:48.830 回答
0

首先表名不应该包含空格。

我正在考虑您有表名 new_orders。

单引号不解析变量,双引号将解析变量。

前任。

1) $count = 1;
echo "计数是 $count";
//输出:计数为1

2) $count = 1;
echo '计数是 $count';
//输出:计数是$count

参考这个: http: //php.net/manual/en/language.types.string.php

尝试这个:

$query = "INSERT INTO new_orders (length, width, color, quantity, total) VALUES ('".$length."', '".$width."', '".$color."', '". $quantity."', '".$total."')";

对于数据库列具有整数数据类型:(考虑长度,宽度,数量,总数都是整数类型)

$query = "INSERT INTO new_orders (length, width, color, quantity, total) VALUES (".$length.", ".$width.", '".$color."', ".$quantity.", ".$total.")";

于 2013-11-06T08:54:41.287 回答