PHP mysql返回语法错误

时间:2013-09-22 15:46:24

标签: php mysql sql syntax

这是返回的错误:

  
    
      

错误:您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在第1行的“,3000”附近使用正确的语法

    
  

这是php文件:

<?php
$doc_root=getcwd();    
include "$doc_root/includes/connectsql.php";
$roomType=$_POST[rtypeid];
$roomBed=$_POST[numbed];
$roomPrice=$_POST[price];

$sql="INSERT INTO     RoomTypes(ROOM_TYPE,NUM_BEDS,PRICE_PER_NIGHT)VALUES($roomType,$roomBed,$roomPrice)";


if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
else
{
echo"<script>alert('Record added');</script>";
header("Location:/cpanel.php");
exit();
}

mysqli_close($con);
?>

然后这是提交的表格:

<form action='addRoomType.php' method='post'>
Room Type:<input type=text name='rtype'>
Number of Beds:<input type=text name='num_bed'>
Price per Night:<input type=text name='price'>
<input type='submit' value='submit' name='submit'>
</form>

我第一次遇到错误时不知道该怎么回事

2 个答案:

答案 0 :(得分:1)

您的代码中存在多个(可能的)错误。首先,您的数组索引周围没有引号(它应该是$_POST['rtypeid']而不是$_POST[rtypeid]。如果您正在处理正确配置的开发/测试服务器,这应该已经导致错误被触发。

其次,您的RoomTypes.PRICE_PER_NIGHT字段是定义为数字类型(INT,SMALLINT,FLOAT等)还是字符串类型(CHAR,VARCHAR等)?

此外,正如您在回答的评论中所述,在处理用户输入时,您应该继续阅读有关php和安全性的调试(SQL注入和可能的跨站点脚本是两个关键字)你应该告知)。

答案 1 :(得分:0)

1)在SQL中添加引号:

VALUES('$roomType','$roomBed','$roomPrice')

2)从POST中转义值以避免SQL injections

$roomType = mysql_real_escape_string($_POST['rtypeid']);
$roomBed = mysql_real_escape_string($_POST['numbed']);
$roomPrice = mysql_real_escape_string($_POST['price']);