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

Php 如何将字符串转换为可用数组,php,arrays,database,oop,mysqli,Php,Arrays,Database,Oop,Mysqli,现在,我正在尝试创建一个MySQLi类,使键入代码更容易,因此它看起来更干净,总体上更可用 我正在尝试编写一个函数,该函数将使用一个准备好的语句执行查询。我的困境是: public function safeRead($query, $data, $params) { $stmt = $mysqli->prepare($query); $stmt->bind_param($params, $data); $stmt->execute();

现在,我正在尝试创建一个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一起使用?

bind_-param原型如下所示:

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%确定。

将字符串转换为数组。虽然我对绑定问题非常熟悉,但我一点也不知道为什么需要字符串。不清楚您在问什么。如果是关于处理IN运算符,那么只需检查传递的参数是否是一个带有is_数组的数组,然后将其连接到stringyou能否显示您的查询和字符串示例?最后我得到了ot。你根本不需要绳子。