2011-04-17 63 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); 
?> 

它可以幫助調試