如何将字符串转换为可用的数组

时间:2013-10-07 13:18:45

标签: php arrays database oop mysqli

现在我正在尝试创建一个MySQLi类,以便更轻松地输入代码,因此它看起来更干净,整体上更实用。

我正在尝试编写一个函数,该函数将使用预准备语句执行查询。我的困境是:

  public function safeRead($query, $data, $params)
  {
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param($params, $data);
    $stmt->execute();
    $result = $stmt->get_result();
    $check = $result->fetch_assoc();      
  }

我当然想要执行查询,如您所见。我的问题在于$ data变量。我怎样才能将数据作为字符串传递,并可能转换为数组或可用的东西,以便与bind_param一起使用?

1 个答案:

答案 0 :(得分:-1)

bind_param prototype看起来像这样:

bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

所以它接受一个类型sssd的字符串,以及那些类型的一堆变量

假设您传递的是正确类型的变量

$stmt->bind_param($params, $data);

这样做的方法是

   public function safeRead($query, $data, $params)
   {
    $stmt = $mysqli->prepare($query);
    $params = str_split( $params ); // Split the params 'sssd'
    foreach( $data as $k => $v ) {
        $stmnt->bind_param( $params[$k], $data[$k] );
    }
    $stmt->execute();
    $result = $stmt->get_result();
    $check = $result->fetch_assoc();      
  }

这是未经测试的。


修改

由于bind_param的第二个参数是通过引用传递的,因此您可能需要在绑定之前创建一个中间变量,而不是绑定数组项。

foreach( $data as $k => $v ) {
    $var_name = 'var'.$k;
    $$var_name = $v;
    $stmnt->bind_param( $params[$k], $$var_name );
}

但我不是100%肯定。