2012-12-07 45 views
-4

好吧,所以我试图创建一个可用的列来增加一旦相同的字段输入,但它似乎并没有工作,我一直在努力的年龄。我知道代码乱七八糟,但请有人可以帮忙吗?不能更新行mysql数据库

$make = strtolower($_POST['make']); 
    $fuel = $_POST['fuel']; 
    $transmission = $_POST['transmission']; 
    $size = $_POST['size']; 
    $doors = $_POST['doors']; 
    /*$date = time();*/ 

    date_default_timezone_set('Europe/London'); 
    $date = date('y-m-d'); 

    $connect = mysql_connect ("localhost", "root", "**********"); 
    mysql_select_db ("car"); 

    $query = "SELECT * FROM type WHERE make = '$make'"; 
    $result = mysql_query($query); 
    $row = mysql_num_rows($result); 
    $amount = $row+1; 
    $id = $make."[".$amount."]"; 

    if (isset($_POST['submit'])){ 

     if ($make&&$fuel&&$transmission&&$size&&$doors) 
     { 
      /*if ($fuel!== $fueltype['0','1','2','3'])*/ 
      if ($fuel=='text') 
      { 
       $msg = ("Please enter a valid fuel type: Petrol, Diesel, LPG or Electric"); 
      } 
      else 
      if ($transmission=='text') 
      { 
       $msg = ('Please enter a valid transmission type: Manual, Auto or Semi-auto'); 

      } 
      else 
      if(strpos($size,".") == false){ 
      $msg = ('Please enter the valid engine size: 1.0, 1.4, 1.6 etc'); 
      } 
      else 
      if(!preg_match("/^[0-9]+$/",$doors)){ 
      $msg = ('Please enter the number of doors. 3, 5 etc'); 
      } 
      else{ 
      //Creates the id 
      $query = mysql_query("SELECT * FROM type"); 
     $numrows = mysql_num_rows($query); 

     if ($numrows!=0){ 

      while ($row = mysql_fetch_assoc($query)){ 
      $dbid = $row["id"]; 
      $dbmake = $row["make"]; 
      $dbfuel = $row["fuel"]; 
      $dbtransmission = $row["transmission"]; 
      $dbsize = $row["size"]; 
      $dbdoors = $row["doors"]; 
      } 

      if ($make==$dbmake&&$fuel==$dbfuel&&$transmission==$dbtransmission&&$size==$dbsize&&$doors==$dbdoors){ 

      print_r($dbid); 
      print_r($dbmake); 
      print_r($dbfuel); 
      print_r($dbtransmission); 
      print_r($dbsize); 
      print_r($dbdoors); 
        mysql_query("UPDATE type SET available=available+1 ON DUPLICATE KEY id = id "); 
      } 
      else{ 

      //increments the available column '$make'+'[#]' 
      $query = "SELECT * FROM type WHERE id = '$id'"; 
      $result = mysql_query($query); 
      $numrows = mysql_num_rows($result); 
      $inc = $numrows+1; 
      $available = $inc; 


      $query = mysql_query ("INSERT INTO type VALUES ('$id', '$make', '$fuel', '$transmission', '$size', '$doors', '$date', '$available')"); 
      $msg = ("Car has been added to database. <a href='database.php'>View database?</a>"); 
      } 
      } 
      } 
      } 
+3

您需要缩小放下你的问题。粘贴你的整个脚本并说“在这里,修复这个”并不是一个好主意。 – dtbarne

+2

**警告!**您的代码遭受[SQL注入漏洞](http://en.wikipedia.org/wiki/SQL_injection)。请使用*非弃用*数据库接口,如[PDO](http://php.net/book.pdo),以便您可以利用[参数化查询](http://en.wikipedia.org/wiki/Prepared_statement )。 – Charles

+0

你有sql注入漏洞。您不应该使用mysql_ *函数,因为它们已被弃用,并且在公共论坛中发布数据库密码可能不是一个好主意。 – Cfreak

回答

2

这不能解决您的问题,因为您的代码中存在太多的问题来确定问题所在。

但是,您的代码易受SQL注入攻击。如果您打算将其上传到人们可能使用的某种网站,请使用PHP PDO参数化或以其他方式清理您的所有输入。

0

如何改变SQL语句:

"UPDATE type SET available=available+1 where id='$dbid'" 

我不知道有关查询使用上的重复,如果它是有效的,你正在使用的ID = ID