我正在尝试创建一个自定义 MVC 框架,因为我有一个接受数组并触发插入查询的函数。
function insertFromArray($array, $table) {
foreach ($array as $key => $value) {
$fields[] = "`" . $key . "`";
$values[] = "'" . $value . "'";
}
$sql = "INSERT INTO `$table` (" . implode(",", $fields) . ") VALUES (" . implode(",", $values) . ")";
mysql_query($sql);
return (mysql_error()) ? mysql_error() : mysql_insert_id();
}
但是当我得到一些 mysql 函数而不是字符串或整数时,我的函数不起作用,比如对于文件名“dateTime”,我得到 value = NOW() 在这种情况下我的查询将是
INSERT INTO `$table` (`field1`, `field2`, `dateTime`) VALUES ('value1','value2','NOW()')
这会抛出错误,我想要一些通用的解决方案,以便我的查询可以在任何一种情况下运行,如果它是字符串、数字或任何 mysql 函数。
我尝试创建一个包含所有函数的数组,并从比较开始,例如 $value 的开头是否与 mysql 函数数组中的任何函数匹配,但我认为这不是一个好方法,有吗?更好的方法来做到这一点
最佳答案
$values[] = "'" . $value . "'";
上面的行将所有值视为字符串,这会导致问题。不要将所有值视为字符串并用单引号将它们括起来。
您甚至可以使值部分本身成为一个包含 2 个元素的数组:一个用于值,一个用于值的类型(字符串、数字、函数等),并且在创建插入时以不同的方式处理它们声明。
请使用 mysql 或 PDO 而不是 php 的旧 mysql 扩展。
关于php - 使用php检查字段的值是否是mysql函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034474/