修改
我将表格名称从“新订单”更改为“订单”,并且没有语法错误。它发布到表中,但它不发布整数值。它发布的唯一内容是零(0)。
我尝试在变量周围添加双引号,即。 “$长。”但这给了我和以前一样的错误。所以这是一个语法错误,但我不知道如何解决它。
谢谢大家的快速解答。非常感谢您的帮助。非常感谢你。
原始
我一直在努力更新MySQL数据库中的简单表。我的所有诊断尝试都失败了,我一直收到同样的错误信息:
查询无效:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法 在'订单(长度,宽度,颜色,数量,总数)附近使用VALUES('', '','','','')'在第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>
答案 0 :(得分:1)
您在访问表名时遇到问题
INSERT INTO new orders
-----^
你不能在这里有空格。
将您的表名更改为数据库中的new_orders
或其他内容。
并访问您的PHP代码,例如INSERT INTO new_orders
免责声明:不推荐使用mysql_ *函数,因为它们已被弃用。改为使用MySQLi或PDO。
答案 1 :(得分:0)
如果您的列是数字的,那么它们将不需要引用。您的表名也存在问题new order
这应该是一个单词
答案 2 :(得分:0)
正确的:
$query = "INSERT INTO orders (length, width, color, quantity, total ) VALUES ('$length', '$width', '$color', '$quantity', '$total')";
答案 3 :(得分:0)
首先,表名永远不应包含空格。
我正在考虑你有一个表名new_orders。
单引号不解析变量&amp;双引号将解析变量。
实施例
1)$ count = 1;
echo&#34;计数是$ count&#34 ;;
//输出:计数为1
2)$ count = 1;
echo&#39;计数是$ count&#39;;
//输出:计数为$ count
请参阅:http://php.net/manual/en/language.types.string.php
试试这个:
$ query =&#34; INSERT INTO new_orders(长度,宽度,颜色,数量,总数)VALUES(&#39;&#34;。$ length。&#34;&#39;,&#39; ;&#34;。$ width。&#34;&#39;,&#39;&#34;。$ color。&#34;&#39;,&#39;&#34;。$ quantity 。&#34;&#39;,&#39;&#34;。$ total。&#34;&#39;)&#34;;
对于数据库列,有整数数据类型: (考虑长度,宽度,数量,总数都是整数类型)
$ query =&#34; INSERT INTO new_orders(长度,宽度,颜色,数量,总数)VALUES(&#34;。$ length。&#34;,&#34;。$ width。&#34 ;,&#39;&#34;。$ color。&#34;&#39;,&#34;。$ quantity。&#34;,&#34;。$ total。&#34;)& #34 ;;
答案 4 :(得分:0)
关于代码问题的“一个”还有其他答案。
这是另一个需要解决的非常重要的点。
$POST
这是{称为)superglobal和$
符号丢失后的(必需)下划线。
将它们全部更改为$_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."',
进行操作,您还需要检查列的设置:
它有所不同。试验每一个。
另外,您如何在输入中输入值,是否使用"
作为英寸(例如)?这也可能是一个因素。
一个选项是使用预设号码,让用户从下拉列表选择,复选框或单选按钮中选择。
如果您要使用预设号码,请不要使用点或空格,因为这肯定会引发错误;如果可能,请使用连字符或下划线。