0

下面的代码是我用来添加到已经在数据库中创建的表的代码。我仍然收到查询错误,错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'Location, Horseshoe) VALUES('Obed & Isaacs','Springfield Illinois','Buffalo Chic' 附近使用正确的语法。

如何修复此错误?这似乎是唯一阻止页面其余部分加载的方法。

<?php
$link=mysql_connect("*************","************","***********");
if (!$link)
{
echo "Failed to connect to MySQL: " . mysql_error();
}
mysql_error();
mysql_select_db(horseshoevotes); 

$sql = "INSERT INTO `submissions` (Restaurant, Restaurant Location, Horseshoe)
VALUES('$_POST[restaurant]','$_POST[location]','$_POST[horseshoe]','$_POST[email]')";

if (!mysql_query($sql))
{
die('Error: ' . mysql_error($link));
}
echo "Submitted";

mysql_query($sql);
mysql_close($link);
?>
4

4 回答 4

0

利用

` 

围绕列名,就是这样:

INSERT INTO `submissions` (Restaurant, Restaurant Location, Horseshoe)

应该是这样的:

INSERT INTO `submissions` (`Restaurant`, `Restaurant Location`, `Horseshoe`)

我猜你接下来会看到关于列数与值不匹配的错误。请校对并试运行您的查询。

于 2013-07-31T17:01:54.573 回答
0

您实际上并没有对数据库做任何事情——您只是将查询放入一个变量中。

添加

mysql_query($sql) or die ("Error! ".mysql_error());

在你打电话之前mysql_close

于 2013-07-31T15:56:00.993 回答
0

像这样使用而不是$sql

$restaurant = mysql_real_escape_string($_POST[restaurant]);
$location   = mysql_real_escape_string($_POST[location]);
$horseshoe  = mysql_real_escape_string($_POST[horseshoe]);
$email      = mysql_real_escape_string($_POST[email]);

mysql_query("INSERT INTO `submissions` 
                         (Restaurant, Location, Horseshoe, Email)
                         VALUES('$restaurant','$location','$horseshoe','$email')
           ");
于 2013-07-31T16:00:31.560 回答
0

要快速学习如何使用 MySQL,请开始使用包装类。

我推荐:https ://github.com/ajillion/PHP-MySQLi-Database-Class

当我第一次从 MySQL 切换到MySQLi. 使学习曲线更小。

查看源代码(它托管在 GitHub 上,因此您无需下载即可一目了然)。

也不要继续使用MySQL。由于准备好的语句和其他一些改进,继任者MySQLi更加安全。PDO会更好,但它更先进。

试试看。

于 2013-07-31T16:59:08.250 回答