【问题标题】:Creating dynamic function within a class for INSERT, DELETE and UPDATE在类中为 INSERT、DELETE 和 UPDATE 创建动态函数
【发布时间】:2015-07-20 14:42:37
【问题描述】:

我想知道是否有一种在类中创建函数的好方法,以便轻松进行插入/删除/更新 mysql 查询。

例如

假设我有一个包含 12 行的表,我想使用另一个类中的两个值进行插入查询。插入函数会是什么样子?我希望这个函数可以处理任意数量的值。

function addUser($email, $password) {

    $values = array(
        "email" => $email,
        "password" => $password
    );

    $table = 'users';
    $query = $mysql->insert($values, $table);
}

function insert($values, $table) {
    // what would this look like? (note: this function is within another class.
}

我最终希望使用准备好的语句执行查询,例如:

if($stmt = $this->db->prepare($query)) {
        $stmt->bind_param('ss', $email, $password);
        $stmt->execute();

        if($stmt->fetch()) {
            $stmt->close();
            return true;
        }
    }

【问题讨论】:

  • 别这样。这是个好主意,但最好不要编写自己的工具,还要使用已经存在的工具,例如教义。

标签: php mysql function class mysqli


【解决方案1】:
class Mysql
{
    public static function insert($values, $table)
    {
        if(empty($values) || empty($table))
        {
            // Noting to do
            return "";
        }

        $list = array();

        foreach($values as $k => $v)
            $list[] = "`". $k ."` = '". $v ."'";

        $list = implode(",", $list);
        $query = "INSERT INTO `". $table ."` SET " . $list;
        return $query;
    }
}

$values = array
(
    "email" => "my email",
    "password" => "my password"
);

$table = 'users';
$query = Mysql::insert($values, $table);

echo $query;

这里没有理由使用构造函数,因为所有数据都是静态的。 但如果您愿意,只需从 insert 函数中删除 static 并像这样初始化mysql:

$mysql = new Mysql();
$mysql->insert($values, $table);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    相关资源
    最近更新 更多