Php 未插入到表中的值

Php 未插入到表中的值,php,sql,Php,Sql,我试图向数据库中插入一些值,但总是不成功,我不确定问题出在哪里。我能得到一些帮助吗 $query1 = "INSERT INTO `incidenceoffire`(`locationOfFire`, `dateFireOccurred`, `timeFireOccurred`, `classOfFire`, `originOfFire`, `noOfWounded`, `noOfFatalities`,`occupancy`,`noOfFirePersonnelOnScene`,`noOfF

我试图向数据库中插入一些值,但总是不成功,我不确定问题出在哪里。我能得到一些帮助吗

$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>';
        }
    }   

为了清晰起见,以下是您需要的。我不打算优化它或任何东西,但它是一个基准,你应该从哪里开始

$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的prepare。此函数将允许我们安全地转义传递到查询中的数据。这是出于安全目的。这个表示我们正在插入的与上面标识的字段关联的值

$query1->bind_param('sssssssssss', 
             $locationoffire, 
             $datefireoccurred, 
             $timefireoccurred, 
             $classoffire, 
             $originoffire, 
             $occupancy, 
             $noofwounded, 
             $nooffatalities, 
             $noofpersonnel, 
             $nooftrucks, 
             $backuptrucks);
在这里,我们使用bind_param将变量绑定到我们在准备好的语句中使用的。这使我们能够安全地逃逸数据。第一个参数中的s代表字符串,因为我们希望从该变量接收的数据应该是字符串。你也可以用i来表示整数,如果你希望有's和,'s,当你只需要数字时,用d来表示double。最后,如果希望blob随时间传输到语句中,则可以使用b

现在,由于您有两条语句,请重复上述步骤并使用$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;

这一切从一开始就应该为您发挥作用,但请阅读并理解正在转播的内容。始终使用中提供的文档和示例,并请遵循安全方面的最佳做法。如果您创建了一个被黑客攻击的站点,并且有一天我最终修复了它

mysql\u insert\u id-definition:检索由上一个查询(通常是insert)为自动增量列生成的id。另外,请不要使用MySQL,因为它在5.3+中已被弃用,并且目前已在5.5中删除。在尝试使用mysql\u insert\u id之前,我必须以某种方式在query1中包含自动递增的“id”?如果列设置为unique并设置为自动递增,则不需要在查询中显式声明值。只需执行查询,然后使用mysqli\u insert\u id;要获取之前插入的查询,请单击“确定”。我将开始使用mysqli。非常感谢。