0

我有一个数据库类如下:

class Db
{
public $mysqli = null;

public function __construct($port = NULL)
{
    include $_SERVER['DOCUMENT_ROOT'].'/php/'.'config.php';
    if($port == NULL)
        $port = ini_get('mysqli.default_port');

    $this->mysqli = new mysqli(HOST, USER, PASS, DB, $port)
        or die('There was a problem connecting to the database');

    if ($this->mysqli->connect_errno) {
        echo "Error MySQLi: ( " . $this->mysqli->connect_errno  . ") " . $this->mysqli->connect_error;
        exit();
     }
       $this->mysqli->set_charset("utf8"); 
}

所有这些都很好,我添加了这个功能:

public function insert($sql, $bind) {
    $stmt = $this->mysqli->prepare($sql);
    $stmt->bind_param('sssssss', $bind[0], $bind[1], $bind[2], $bind[3], $bind[4], $bind[5], $bind[6]);
    $stmt->execute();
}

当然,问题在于这不是很动态。我可能只有两件事要绑定,它们不一定是字符串。

所以例如我这样做:

$db = new Db();
$strings = array ($chosenImage, $id);
$db->insert("INSERT INTO Media VALUES (NULL, ?, ?)", $strings);

所以这只是两个绑定。

那么我的问题有两个:1)我如何最好地将这个函数变成一个评估数组的类型和大小的函数,并且尽可能简洁?

2)此外,使用类似的功能(让我们称之为召回)我将如何使用 select 语句返回 2 个项目,并将它们绑定以返回(假设我想要返回的数量可能会根据查询而改变

4

1 回答 1

3

-1。具有不同的插入功能是非常错误的想法。实际上只需要 SET 语句的助手,即可动态创建它。其余的必须使用常规query()函数调用。
0. 类型没那么重要,用s什么都可以。
1. call_user_func_array()
2. get_result()

于 2013-10-28T21:49:45.623 回答