PHP准备语句功能

时间:2016-01-11 17:29:00

标签: php prepared-statement

我想创建一个“常规”函数来处理PHP中所有准备好的语句。

即,我想要一个像

这样的功能
function doStmt($sqlQuery,$types,$arg1,...,$argN) {
    (...)
    if(!$stmt = $mysqli->prepare($sqlQuery)) //error blah blah;
    if (!$stmt->bind_param($types, $arg1,...,$argN)) //error ...;
    if (!$stmt->execute()) //error ...;
    $stmt->close();
    return true;
}

我的问题主要是如何动态设置doStmt函数的N个参数,然后如何将它们传递给bind_param

我之所以需要这样的功能是因为我不需要检查错误&我每次都使用准备好的声明关闭。

1 个答案:

答案 0 :(得分:1)

试试这个:

function doStmt() {
  // You could use func_num_args() get how many arguments do you have...
  $argList = func_get_args();
  $sqlQuery = array_shift($argList);
  $types = array_shift($argList);

  // echo $sqlQuery;
  // echo $types;
  // print_r($argList);

  $stmt = $mysqli->prepare($sqlQuery);
  call_user_func_array(array($stmt, 'bind_param'), $argList);
}

doStmt('select ... ? ... ? ... ? ...', 'sss', 'string1', 'string2', 'string3');
相关问题