簡體   English   中英

無法通過引用傳遞參數 2 - uuid PDO

[英]Cannot pass parameter 2 by reference - uuid PDO

我正在嘗試將UUID()與我的INSERT查詢一起INSERT

$handle->beginTransaction();
// Define query
$query = "INSERT INTO users (users_uuid, type_id) VALUES (:uuid, :type_id)";
// Prepare statement
$stmt = $handle->prepare($query);
// Bind parameters
$stmt->bindParam(':uuid',"SELECT UUID()",PDO::PARAM_STR);
$stmt->bindParam(':type_id',1,PDO::PARAM_INT);
// Execute query
$stmt->execute();
$handle->commit();

此查詢返回此錯誤無法通過引用傳遞參數 2 ... 在第 51 行 它指向行$stmt->bindParam(':uuid',"SELECT UUID()",PDO::PARAM_STR);

我在這里做錯了什么?

bindParam的第二個參數是通過引用傳遞的,應該是一個變量。 您正在直接傳遞不允許的值。

UUID()直接放在查詢中,因為如果它作為參數綁定,它將作為帶引號的字符串放置在查詢中,並且不會被評估為 UUID 值。

您也可以將1直接放在查詢中。 或者將1賦給一個變量,並在綁定參數:type_id時將該變量作為第二個參數。

$type_id = 1;
$stmt->bindParam(':type_id', $type_id, PDO::PARAM_INT);

在這種情況下不需要綁定它,只需將它包含在您的查詢中:

$query = "INSERT INTO users (users_uuid, type_id) VALUES (UUID(), :type_id)";

..then 綁定:type_id就像你已經一樣。

你的 INSERT INTO 用戶 (users_uuid, type_id) VALUES (SELECT UUID(), 1)

不是有效的 mysql 查詢

嘗試先獲取 uuid(),然后將該值插入到您的用戶表中

如果要傳遞值,請使用以下命令:

$type_id = 1;
$stmt->bindValue(':type_id', $type_id, PDO::PARAM_INT);

如果要綁定參數(在其中傳遞對變量的引用),請執行以下操作:

$stmt->bindParam(':type_id', $type_id, PDO::PARAM_INT);

// now you can update $type_id, since it is a reference, and execute multiple times:
foreach($id as $i){
    $type_id = $i;
    $stmt->execute();
}

暫無
暫無

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

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