无效的查询 - 麻烦更新MySQL数据库

时间:2013-11-06 08:40:39

标签: php mysql sql database forms

修改

我将表格名称从“新订单”更改为“订单”,并且没有语法错误。它发布到表中,但它不发布整数值。它发布的唯一内容是零(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>

5 个答案:

答案 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."',进行操作,您还需要检查列的设置:

  • CHAR
  • VARCHAR
  • INT
  • SMALLINT
  • TINYINT
  • 其他。

它有所不同。试验每一个。

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

一个选项是使用预设号码,让用户从下拉列表选择,复选框或单选按钮中选择。

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