我的大部分网站功能都使用ajax脚本。为了在特定表中更新或插入一行,我用$_GET发送请求,然后用检索每个值
foreach ($_GET as $item => $value){
$$item =addslashes($value);
}
然后我有这个查询的SQL语句
if($_GET['action']=='update'){
$sql =$conn->query("UPDATE `newDrivers` SET `idCompany`='$idCompany', ...
WHERE `id`='$id'");
}
else{
$sql =$conn->query("
INSERT INTO `newDrivers`(`idCompany`, ...)
VALUES ('$idCompany', ...)");
}
我发现效率低下,命名每一列并为我拥有的每一个表创建新文件。有没有什么方法可以在不单独命名每一列的情况下更新/插入,这样脚本就更通用了?
这取决于您的数据库适配器。在你的情况下,你可以写这样的结构
$columnsForUpdate = array();
//collect array with all pair `field` = 'value'
foreach ($_GET as $item => $value){
$value = addslashes($value);
$columnsForUpdate[] = "`{$item}` = '{$value}'";
}
if($_GET['action']=='update'){
//concat it to string
$columns = implode(', ', $columnsForUpdate);
$sql =$conn->query("UPDATE `newDrivers` SET {$columns} WHERE id = {$id}")
}
else{
$columns = implode(', ', $columnsForUpdate);
//insert have SET syntax too
$sql =$conn->query("INSERT INTO `newDrivers` SET {$columns}");
}