php - 使用php检查字段的值是否是mysql函数

标签 php mysql

我正在尝试创建一个自定义 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/

相关文章:

php - 在if条件php中使用for循环计数器

php - 使用ajax刷新div

php - MYSQL 和 PHP : mysql ignoring first row

php - 如何使用 shell 和终端克隆 mysql 数据库而不进行 mysql 转储和上传

php - 三元运算符的不良做法

php - Magento 2 - 如何基于默认创建属性集

php - 关闭网站中的 mysql 连接有多重要,为什么?

javascript - for 循环内的变量给出最大值

MySQL:每月为具有日期范围的数据创建一行

php - 用于发出简单 HTTP 请求的 Lambda 函数