Php 如何将字符串转换为可用数组
现在,我正在尝试创建一个MySQLi类,使键入代码更容易,因此它看起来更干净,总体上更可用 我正在尝试编写一个函数,该函数将使用一个准备好的语句执行查询。我的困境是: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();
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。你根本不需要绳子。