表单php和sql的问题

时间:2011-04-17 08:47:53

标签: php sql forms syntax-error

好的,所以我是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)
?>

2 个答案:

答案 0 :(得分:0)

您将ID插入单引号:

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

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

答案 1 :(得分: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);
?> 

它有助于调试