簡體   English   中英

PHP - mysqli_stmt_bind_param 組多個 $types

[英]PHP - mysqli_stmt_bind_param group multiple $types

有沒有辦法在mysqli_stmt_bind_param()函數中以某種方式“分組”同一類的多個類型標識符? 例如'10*s' 代替'ssssssssss'。

假設我有以下字符串$prep_sql和一個語句$stmt

$prep_sql = "INSERT INTO table (foo1, foo2, ..., fooN) VALUES (?, ?, ..., ? )";
$stmt = mysqli_prepare($connection, $prep_sql);

現在我需要將語句綁定到參數。 假設有十個字符串參數。 我真的需要單獨指定每個參數類型('s'),就像這樣:

mysqli_stmt_bind_param($stmt, 'ssssssssss', $var1, $var2, ..., $var10);

或者有沒有辦法對類型進行分組,可能是這樣的:

mysqli_stmt_bind_param($stmt, '10*{s}', $var1, $var2, ..., $var10);

不,沒有辦法直接做到這一點。 標識符字符串應該總是顯式的。

但是,鑒於大多數情況下您可以對任何參數使用“s”這一事實,您可以使用mysqli 輔助函數,例如我寫的:

function prepared_query($mysqli, $sql, $params, $types = "")
{
    $types = $types ?: str_repeat("s", count($params));
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    return $stmt;
}

只需將它添加到您的配置文件中,並使您所有的 mysqli 交互都減少 2 倍的冗長。 通過自動生成類型字符串,它也可以解決您當前的問題:

$sql = "INSERT INTO table (foo1, foo2, ..., fooN) VALUES (?, ?, ..., ? )";
$parameters = [$var1, $var2, ..., $var10];
prepared_query($connection, $sql, $parameters);

暫無
暫無

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

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