我正在创建一个非常简单的php论坛系统来与我的门户系统集成(我试图整合一些现有的,但我发现我有很多我不想要的功能,所以我决定创建我的拥有)。 下面的页面只是电路板创建页面的一个起点,但是当我点击提交时,我只会收到以下错误:您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在'desc ='附近使用正确的语法测试特殊字符áéóçãã''在第1行
<?php
function renderForm($nome, $desc, $error)
{
$nome = htmlspecialchars($_POST['nome']);
$desc = htmlspecialchars($_POST['desc']);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>New Record</title>
</head>
<body>
<?php
if ($error != '')
{
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
}
?>
<form action="" method="post">
<div>
<strong>Nome: *</strong> <input type="text" name="nome" /><br/>
<strong>Desc: *</strong> <input type="text" name="desc" /><br/>
<p>* required</p>
<input type="submit" name="submit" value="Submit">
</div>
</form>
</body>
</html>
<?php
}
include("../../config.php");
if (isset($_POST['submit']))
{
$nome = htmlspecialchars($_POST['nome']);
$desc = htmlspecialchars($_POST['desc']);
if ($nome == '' || $desc== '')
{
$error = 'ERROR: Please fill in all required fields!';
renderForm($nome, $desc, $error);
}
else
{
mysql_query("INSERT forum_boards SET nome='$nome', desc='$desc'")
or die(mysql_error());
}
}
else
{
renderForm('','','');
}
?>
这可能是什么?
答案 0 :(得分:2)
插入语法不正确。正确的形式是:
INSERT INTO forum_boards (`nome`, `desc`) VALUES ('$nome', '$desc')
此外,您需要转义输入以防止SQL注入:
$nome = mysql_real_escape_string(htmlspecialchars($_POST['nome']));
$desc = mysql_real_escape_string(htmlspecialchars($_POST['desc']));
还有人会抱怨mysql_ *函数已被折旧。我觉得自己像个编译器!
答案 1 :(得分:0)
插入的作品如下:
INSERT forum_boards(colum_name1,column_name2,column_name3)VALUES($ value1,$ value2,$ value3);等
还要注意您的代码容易受到SQL注入的攻击http://en.wikipedia.org/wiki/SQL_injection
还要注意mysql_ *函数正式已弃用!
答案 2 :(得分:0)
尝试使用单引号代替双引号 单引号的执行速度超过双引号。
尝试在变量中保存查询,它更具可读性
$query='INSERT INTO forum_boards (nome,desc) VALUES("'.$nome.'","'.$desc.'")';
//尝试使用mysqli,它非常先进,总是使用预备语句
mysqli_query($查询);