9

UUID()クエリと一緒に挿入しようとしてい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();

このクエリは、51 行目で次のエラーを返します。そして、それは行を指しています$stmt->bindParam(':uuid',"SELECT UUID()",PDO::PARAM_STR);

ここで何が間違っていますか?

4

4 に答える 4

30

への 2 番目の引数bindParamは参照によって渡され、変数である必要があります。許可されていない値を直接渡しています。

UUID()パラメーターとしてバインドされている場合は、引用符で囲まれた文字列としてクエリに配置され、UUID 値に評価されないため、クエリに直接配置します。

1クエリに直接配置することもできます。または、変数に代入1し、パラメーターをバインドするときにその変数を 2 番目の引数として指定します:type_id

$type_id = 1;
$stmt->bindParam(':type_id', $type_id, PDO::PARAM_INT);
于 2012-11-16T00:12:41.430 に答える
2

この場合、バインドする必要はありません。クエリに含めるだけです。

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

..次に、すでに行っているようにバインド:type_idします。

于 2012-11-16T00:07:37.830 に答える
0

INSERT INTO users (users_uuid, type_id) VALUES (SELECT UUID(), 1)

は有効な mysql クエリではありません

最初に uuid() を取得してから、その値を users テーブルに挿入してください

于 2012-11-16T00:21:20.540 に答える