0

我正在创建一个非常简单的 php 论坛系统来与我的门户系统集成(我试图集成一些现有的,但我发现所有这些都有很多我不想要的功能,所以我决定创建自己的)。下面的页面只是板创建页面的起点,但是当我单击提交时,我只是收到以下错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'desc='Testing special characters á é ó ç ã ñ'' 附近使用正确的语法

<?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('','','');
 }
?>

这可能是什么?

4

3 回答 3

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_* 函数被贬值了。我觉得自己像个编译器!

于 2013-07-04T15:55:56.037 回答
0

插入工作如下:

插入 forum_boards (colum_name1,column_name2,column_name3) VALUES($value1, $value2, $value3); 等等

还要注意你的代码容易受到 SQL 注入http://en.wikipedia.org/wiki/SQL_injection

还要注意 mysql_* 函数已正式弃用

于 2013-07-04T15:57:05.677 回答
0

尝试使用单引号代替双引号。
单引号的执行速度超过双引号。

尝试将查询保存在变量中,它更具可读性

$query='INSERT INTO forum_boards (nome,desc) VALUES("'.$nome.'","'.$desc.'")';

//尝试使用mysqli,它非常先进,总是使用prepared statement

mysqli_query($查询);

于 2013-07-04T16:04:20.733 回答