我正在尝试将一些值插入到数据库中,但是,它总是不成功,我不确定问题是什么。我可以得到一些帮助吗
$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>';
}
}
答案 0 :(得分: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
表示加倍,如果您希望有.
和,
的话。最后,如果您希望将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;
这应该从一开始就适合你,但请阅读并理解正在传递的内容。始终使用http://php.net提供的文档和示例,请遵循最佳安全实践,减少您创建被黑客攻击的网站,并最终修复它