2011-04-17 61 views
0

好吧,所以即时新的PHP和SQL,我有这种形式提交一些名称和城市到数据库中。问题形式的PHP和SQL

我设法做到这一点,但一旦点击提交按钮,我得到一个错误:

“错误:你在你的SQL语法错误;检查对应于你的MySQL服务器版本的手册在第1行'1'附近使用正确的语法“

但是,当我检查phpmyadmin时,新记录在那里!,所以我不知道有什么问题,那就是问题所在。

这是代码:

<?php 
    mysql_connect("localhost", "name", "pass") or die(mysql_error()); 
    echo "Connection to the server was successful!<br/>"; 

    mysql_select_db("db_name") or die(mysql_error()); 
    echo "Database was selected!<br/>"; 



    $resultComuna = mysql_query("SELECT idComuna, nombre FROM comuna ORDER BY nombre ASC"); 
    $resultGiro = mysql_query("SELECT idGiro, nombre FROM giro ORDER BY nombre ASC"); 

?> 

<html> 
<head> 
    <title>TEST</title> 
</head> 
<body> 
    <br/><br/> 
    <form name="form" method="POST" action="test_action.php"> 
     <div align="center"> 

    <!--///////////////// input nombre //////////////////////// --> 
      NOMBRE CLIENTE: 
      <input name="nombreCliente" type="text" maxlength="30" size="40"></> 

    <!-- ///////////////////////////////////////////////////////////// --> 

    <!-- ////////////////////drop box para giro ///////////////////// --> 
      GIRO: 
      <select name="giro"> 
      <?php 
      while($row = mysql_fetch_assoc($resultGiro)){ 
       echo "<option value=\"".$row['idGiro']."\">".$row['nombre']."</option><br/>"; 
      } 
      ?>  
      </select> 
    <!-- ///////////////////////////////////////////////////////////// --> 

    <!-- ////////////// dropbox para comunas //////////////////////// --> 
      COMUNA: 
      <select name="comunas"> 
      <?php 
      while($row = mysql_fetch_assoc($resultComuna)){ 

       echo "<option value=\"".$row['idComuna']."\">".$row['nombre']."</option><br/>"; 
      } 
      ?>  
      </select> 
    <!-- ////////////////////////////////////////////////////////////// --> 

     <input type="submit" value="Ingresar"> </> 

     </div> 
    </form> 

</body> 
</html> 

和test_action.php是:

<?php 
    $con = mysql_connect("localhost", "name", "pass"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 

    mysql_select_db("data_base", $con); 


$query = mysql_query("SELECT max(idNombre)+1 as id FROM nombre"); 
$row = mysql_fetch_array($query); 
$idMax = $row['id']; 


    $sql = mysql_query("INSERT INTO nombre VALUES ('".$idMax."','".$_POST['comunas']."',".$_POST['giro'].",'".$_POST['nombreCliente']."')"); 

    if (!mysql_query($sql,$con)) 
     { 
     die('Error: ' . mysql_error()); 
     } 
    echo "record added"; 

    mysql_close($con) 
?> 
+0

更换所有您发布的毫无意义的代码,并张贴传递到MySQL的** **生SQL查询,没有任何PHP或HTML代码。 – zerkms 2011-04-17 08:51:29

+0

语法错误表示它:你的一个SQL语句没有正确地形成。尝试回显所有SQL语句,然后您会发现SQL错误。 – Bjoern 2011-04-17 08:52:03

+2

摆脱您的输入!有潜在的SQL注入。 – Nick 2011-04-17 09:01:06

回答

0

你插入单引号中ID:

$sql = mysql_query("INSERT INTO nombre VALUES ('".$idMax."','".$_POST['comunas']."',".$_POST['giro'].",'".$_POST['nombreCliente']."')"); 

你能提供表结构? ID是一个整数还是一个varchar?

+0

这不是一个问题。 Mysql自动转换类型。 – zerkms 2011-04-17 09:03:18

+0

这是表结构: 'CREATE TABLE'nombre'( 'idNombre' INT(10)无符号NOT NULL, 'Comuna_idComuna' INT(10)无符号NOT NULL, 'Giro_idGiro' INT(10)无符号NOT NULL, 'nombre' VARCHAR(255)整理latin1_general_ci默认NULL, PRIMARY KEY('idNombre') KEY'Nombre_FKIndex3'('Comuna_idComuna') KEY'Nombre_FKIndex1'('Giro_idGiro') )' – Gmo 2011-04-17 19:52:07

+0

你能回应sql命令吗?我猜想你正在变成'$ _POST'的值是错误的。 – 2011-04-17 20:01:43

0

尝试改变test_action.php到:

<?php 
    $con = mysql_connect("localhost", "name", "pass"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 

    mysql_select_db("data_base", $con); 

    $query = mysql_query("SELECT max(idNombre)+1 as id FROM nombre"); 
    $row = mysql_fetch_array($query); 
    $idMax = $row['id']; 

    $query = "INSERT INTO nombre VALUES ('".$idMax."','".$_POST['comunas']."',".$_POST['giro'].",'".$_POST['nombreCliente']."')"; 
    $sql = mysql_query($query); 
    if (!mysql_query($sql,$con)) 
    { 
     die('Error: ' . mysql_error().'<br>query: '.$query); 
    } 
    echo "record added"; 

    mysql_close($con); 
?> 

它可以帮助调试