将字符串作为参数传递给 PHP PDO

时间:2021-07-31 11:06:54

标签: php function pdo

我正在寻找最好的方式来做这件事情直到未来可能无法做到的事情:

// Only one of these, different each time
$arg_string = "'arg1', 'arg2', 'arg3'";         // Unknown number of arguments!
$arg_string = "'arg1', 'arg2', 'arg3', 'arg4'"; // Unknown number of arguments!
$arg_string = "'arg1'";                         // Unknown number of arguments!

// Where I need help
$stmt->execute([$arg_string]); // Wish I could, maybe PHP 9 will

我的问题是 $string$array 不能轻松传递给 function() 作为其参数。

这对我的工作很重要,因为我正在创建一种查询数据库的方法,而我可能有未知数量的列或值。这是代码在使用 exec() 之前的样子。

我发现这个 SO article (PHP use variable to pass multiple arguments to function) 讨论了 call_user_func_array()。但是,我不知道如何将 call_user_func_array()execute() 一起使用。即使我猜,我还是想知道什么是最好的。

我不介意先将 $arg_string 变成数组,或者不介意,无论哪个是最好的。

做它不能做的事情的最佳方法是什么:

$stmt->execute([$arg_string]);

2 个答案:

答案 0 :(得分:0)

你不需要一个字符串,每个 arg 应该是一个单独的数组元素。

$arg_array = ['arg1']; // or
$arg_array = ['arg1', 'arg2']; // or
$arg_array = ['arg1', 'arg2', 'arg3'];

$stmt->execute($arg_array);

答案 1 :(得分:0)

来自PDOStatement::execute | php.net

// Only one of these, different each time
$arg_string = "'arg1', 'arg2', 'arg3'";         // Unknown number of arguments!
$arg_string = "'arg1', 'arg2', 'arg3', 'arg4'"; // Unknown number of arguments!
$arg_string = "'arg1'";                         // Unknown number of arguments!

// Where I need help
$arg_array = explode(",", str_replace(["'", ' '], '', $arg_string)); // My solution
$stmt->execute([$arg_array]);