0

PHP PDO を使用して、Android アプリが MySQL データベースと通信できるようにしています。

これが私のPHPファイルです:

<?php
$pdo = new PDO("mysql:host=x;dbname=x", "x", "x");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "INSERT INTO k_user_groep(group, user, rol) VALUES (?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($_GET['groupid'], $_GET['user'], $_GET['rol']));
?>

テーブルは次のように設計されています。groupid は他のテーブルの一意のインデックスを参照し、user は他のテーブルの主キーを参照し、rol は何も参照しません。

MySQL で直接、次のクエリが機能します。

INSERT INTO `k_user_groep`(`group`, `user`, `rol`) VALUES ('1', 'test', 'v');

これは、PHP ファイルに対する私の呼び出しです。

x.php?groupid=1&user=test&rol=v

以下を返します。

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group, user, rol) VALUES ('1', 'test', 'v')' at line 1' in x.php:7 Stack trace: #0 x.php(7): PDOStatement->execute(Array) #1 {main} thrown in x.php on line 7

何かアドバイス?

4

2 に答える 2

3

group mySQL の予約語です。

列名をバッククォートでラップしているため、2番目の例で機能します。

于 2012-06-01T14:55:29.903 に答える
0

明らかに、PDO コードと MySQL クライアントで試しているクエリとは異なります。クライアントではすべての識別子が引用されていますが、PDO コードでは引用されていません。

于 2012-06-01T14:55:49.887 に答える