其他人已经给了你答案。要添加,您在列名周围使用引号,这些引号应该是反引号或完全删除引号。
变化:
INSERT INTO orders ('name', 'tacoOrder')
^ ^ ^ ^
到
INSERT INTO orders (`name`, `tacoOrder`)
或
INSERT INTO orders (name, tacoOrder)
或者作为一个完整的答案:
$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];
$query = "INSERT INTO orders (`name`, `tacoOrder`) VALUES ('$name', '$tacoOrder')";
旁注:反引号不是必需的,但列名不能使用单引号。我自己在列名周围使用反引号只是一种习惯。
另外,这个$mysql_close(); 不应该在mysql_close 前面有一个$,而是在括号内有一个$link:
更改为mysql_close($link);
正如 Alien 先生所说,mysql_close() 的变量是可选的(谢谢)
在if(!mysql_query($query) 中还缺少一个),应该读作if(!mysql_query($query))
请考虑使用准备好的语句或 PDO 切换到 mysqli_* 函数。 mysql_* 函数已弃用,将从未来的版本中删除。
完全重写:(测试并在我的服务器上工作)
<?php
define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link)
{
die('Could not connect to database: ' . mysql_error());
}
$db_select = mysql_select_db(DB_NAME);
if(!$db_select)
{
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}
echo "HOLY EFF";
$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];
$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysql_query($query))
{
die("DAMMIT");
}
else{ echo "Success"; }
mysql_close();
?>
你也可以使用这个稍有不同的方法:
$query = mysql_query("INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')");
if (!$query) {
die('Invalid query: ' . mysql_error());
}
else{ echo "Success"; }
脚注:
您可能会获得空数据条目,因为您没有检查表单元素是否为空。
您可以使用条件语句来实现:
if(!empty($_POST['name']) || !empty($_POST['tacoOrder']))
{
// continue with code processing
}
另外,使用 Awlad 在 his answer 中提到的关于使用 mysql_real_escape_string() 的内容
您还可以在 SO How can I prevent SQL injection in PHP? 上阅读一篇好文章
这是一个(基本)基于mysqli_* 的方法,带有mysqli_real_escape_string() 函数和一个条件语句,用于检查是否有任何字段为空。
如果其中一个字段为空,则不会执行查询。
<?php
define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link)
{
die('Could not connect to database: ' . mysqli_error());
}
$db_select = mysqli_select_db($link,DB_NAME);
if(!$db_select)
{
die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
}
echo "HOLY EFF";
$name = mysqli_real_escape_string($link,$_POST['name']);
$tacoOrder = mysqli_real_escape_string($link,$_POST['tacoOrder']);
if(!empty($_POST['name']) || !empty($_POST['tacoOrder'])){
$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysqli_query($link,$query))
{
die("DAMMIT");
}
else{ echo "Success"; }
mysqli_close($link);
}
?>