簡體   English   中英

關於PHP的准備聲明

[英]About PHP prepared statement

我正在努力實現執行准備好的語句的簡單功能。 現在我有一個問題:

class mysqli_extend extends \mysqli{
function pquery(){
    $input  = func_get_args();
    if ($stmt   = parent::prepare($input[0])){
        $input  = array_slice($input,1);
        $index = count($input);
        if ($index){ //non-0 == true, 0 == false
            $typestr = '';
            while ($ele = current($input)){
                $type   = gettype($ele);
                switch($type) {
                    case "integer": $typestr .= 'i';    break;
                    case "double":  $typestr .= 'd';    break;
                    case "string":  $typestr .= 's';    break;
                    default:        $typestr .= 'b';    break;
                }
                next($input);
            }
            array_unshift($input,$typestr);

            //output to console checking array content
            while ($ele = current($input)){
                echo key($input) . ":" . $ele . "\t";
                next($input);
            }

            call_user_func_array(array($stmt,'bind_Param'),$input);
        }
        $stmt->execute();
    }
    return true;
}
}

這是要執行的命令:

$test = $mysqli_extend->pquery('UPDATE user_list SET upriv = ? WHERE uname =?','moderator','admin');

雖然echo語句為我提供了數組的正確內容“ 0:ss 1:moderator 2:admin”,但我收到以下錯誤:“警告:mysqli_stmt :: bind_param()的參數2應該是引用”

因為對於最新的php版本,它具有問題“致命錯誤:調用時傳遞引用已被刪除”

請問是否有解決此問題的方法?

感謝ryan vincent,通過該鏈接我可以進行臨時工作,盡管我沒想到將來會這樣:

foreach($input as $k => &$arg){
    $Args[$k] = &$arg;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM