2013-11-13 5 views
1

Я пытаюсь вставить некоторые значения в базу данных, однако это всегда безуспешно, и я не уверен, в чем проблема. Могу ли я получить помощь, пожалуйста,Значения не вставлены в таблицу

$query1 = "INSERT INTO `incidenceoffire`(`locationOfFire`, `dateFireOccurred`, `timeFireOccurred`, `classOfFire`, `originOfFire`, `noOfWounded`, 
`noOfFatalities`,`occupancy`,`noOfFirePersonnelOnScene`,`noOfFireTrucks`,`backupUsed`) 
VALUES('$locationoffire', '$datefireoccurred', '$timefireoccurred', '$classoffire', '$originoffire', '$occupancy', '$noofwounded', '$nooffatalities', 
'$noofpersonnel', '$nooftrucks', '$backuptrucks')"; 

    $incidenceoffire_id = mysql_insert_id(); 

    $query2 = "INSERT INTO `backuptrucks` (`unitName`) VALUES ('$unitname')"; 

    $query2 .=" WHERE `IncidenceOfFire_incidentID` = '".$incidenceoffire_id."'"; 

    $result = false; 
    if(mysql_query('BEGIN')){ 

     if(mysql_query($query1) && mysql_query($query2)) 
     { 
      $result = mysql_query('COMMIT'); 
      echo '<script type="text/javascript"> 
        alert("Insert Successful!"); 
        </script>'; 
     } 
     else 
     { 
      mysql_query('ROLLBACK'); 
      echo '<script type="text/javascript"> 
        alert("Insert Unsuccessful!"); 
        </script>'; 
     } 
    } 
+2

'mysql_insert_id()' - определение: * Получает идентификатор, сгенерированный для AUTO_INCREMENT по ** предыдущему ** запросу (обычно INSERT). * Также ** пожалуйста ** не используйте MySQL, поскольку он устарел в 5.3+ и сейчас удален в 5.5. Используйте [MySQLI] (http://php.net/manual/en/book.mysqli.php) или [объекты данных PDO-php] (http://php.net/manual/en/book.pdo.php) – Ohgodwhy

+0

так ли это, что я должен каким-то образом включить в id1 'id' (который является auto_increment), прежде чем попытаться использовать mysql_insert_id()? – user2949934

+0

Если столбец установлен как уникальный и для него установлено значение auto increment, вам не нужно явно объявлять значение в запросе. просто выполните запрос, затем используйте 'mysqli_insert_id();', чтобы вставлять предыдущие запросы ID – Ohgodwhy

ответ

0

С целью ясности, вот что вам нужно. Я не собираюсь его оптимизировать или что-то еще, но это базовый уровень для того, где вы должны начать.

$mysqli = new mysqli('host', 'name', 'user', 'database'); 

$query1 = $mysqli->prepare('INSERT INTO 
      `incidenceoffire`(
       `locationOfFire`, 
       `dateFireOccurred`, 
       `timeFireOccurred`, 
       `classOfFire`, 
       `originOfFire`, 
       `noOfWounded`,      
       `noOfFatalities`, 
       `occupancy`, 
       `noOfFirePersonnelOnScene`, 
       `noOfFireTrucks`, 
       `backupUsed` 
      ) 
      VALUES(?,?,?,?,?,?,?,?,?,?,?)); 

В приведенном выше примере мы используем подготовку mysqli. Эта функция позволит нам безопасно избежать данных, передаваемых в запрос. Это для целей безопасности. ? представляет значение, которое мы вставляем, связанное с указанным выше полем.

$query1->bind_param('sssssssssss', 
      $locationoffire, 
      $datefireoccurred, 
      $timefireoccurred, 
      $classoffire, 
      $originoffire, 
      $occupancy, 
      $noofwounded, 
      $nooffatalities, 
      $noofpersonnel, 
      $nooftrucks, 
      $backuptrucks); 

Здесь мы использовали bind_param связать variable к ? о том, что мы использовали в подготовленном заявлении. Это позволяет нам безопасно избегать данных. s в первом аргументе означает string, поскольку данные, которые мы ожидаем получить от этой переменной, должны быть строкой. Вы также можете использовать i для целого числа - при ожидании только чисел и d для двойного, если вы ожидаете наличия . и ,. Наконец, вы можете использовать b, если вы ожидаете, что blob будет передан с течением времени в оператор.

Теперь, поскольку у вас есть два утверждения, повторите вышеуказанное и используйте $query2, тогда вы можете выполнить свое условие. Мы будем использовать execute() для выполнения подготовленного оператора, который мы построили ранее.

if($query1->execute() && $query2->execute()): 
    $result[] = $query1->commit(); 
    $result[] = $query2->commit(); 
    echo '<script type="text/javascript">alert("Insert Successful!");</script>'; 
else: 
    $result[] = $query1->rollback(); 
    $result[] = $query2->rollback(); 
    echo '<script type="text/javascript">alert("Insert Unsuccessful!");</script>'; 
endif; 

Это все должно функционировать для вас с самого начала, но, пожалуйста, прочитайте и поймите, что передается. Всегда используйте документацию и примеры, приведенные в http://php.net, и, пожалуйста, следуйте рекомендациям по безопасности, если вы создадите сайт, который взломан, и я в конечном итоге его ремонтирую.

Смежные вопросы