0

下記のSQLをご覧ください。

$sql ="INSERT INTO
    demo_participant
    (name, meeting_id_id, password, user_view__url, key, contact_no, email)
    VALUES
    ('$part_name', (SELECT id FROM demo_meeting WHERE meetingID = '$mtngid'),
    '$attendee_password', '$join_url', $getit_part['data'], '$pr_mobile',
    '$pr_email')";

私の問題は、上記のステートメントがキーとそれに関連する値がなくても正常に機能していることです$getit_part['data']

しかし、キー値を保存しようとすると、エラーが発生します。

解析エラー:構文エラー、予期しない''(T_ENCAPSED_AND_WHITESPACE)、 86行目の/opt/lampp/htdocs/UI/user/joinmeeting.phpに識別子(T_STRING)または変数(T_VARIABLE)または数値(T_NUM_STRING)が必要です

そして、の値を次の$getit_part['data']ような別の変数に格納すると、次のよう$key になります。

SQL構文にエラーがあります。'key、c​​ontact_no、email)VALUES(' Rohitn'、(SELECT id FROM demo_meeting WHERE' at line 1の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

構文エラーが発生していることはわかっていますが、デバッグできません。

4

3 に答える 3

4

keyMySQLの予約語です。バックティックでそれを脱出

`key`

selectとを組み合わせることはできませんvalues。試す

INSERT INTO demo_participant(name, 
                             meeting_id_id, 
                             password, 
                             user_view__url, 
                             `key`, 
                             contact_no,
                             email)
SELECT '$part_name', 
       id, 
       '$attendee_password',
       '$join_url',
       '$getit_part['data']',
       '$pr_mobile',
       '$pr_email'
FROM demo_meeting
WHERE meetingID = '$mtngid'
于 2012-08-09T06:57:53.947 に答える
0

中括弧で配列をカプセル化します。

$sql ="INSERT INTO
    demo_participant
    (name, meeting_id_id, password, user_view__url, key, contact_no, email)
    VALUES
    ('$part_name', (SELECT id FROM demo_meeting WHERE meetingID = '$mtngid'),
    '$attendee_password', '$join_url', {$getit_part['data']}, '$pr_mobile',
    '$pr_email')";

PHPアレイドキュメントの例4を参照してください。

Perlの場合と同様に、二重引用符で囲まれた配列から値にアクセスできます。ただし、PHPでは、配列を中括弧で囲む必要があります。

于 2012-08-09T06:57:50.797 に答える
0

最初のエラー:$keySQLコードに入れることができるのは単純な変数だけです。配列参照()のようなすべての式は、PHPが結果を評価し、変数としてSQLに代入するために、$getit_part['data']囲まれている必要があります。{}

2番目のエラー:SQL構文では、ステートメントVALUESの句にサブクエリを入れることができません。代わりに構文INSERTを使用してみてください。例:INSERT ... SELECT ...

INSERT INTO dest (col1, col2)
SELECT val1, (SELECT val2 FROM table2 WHERE ...)

FROM句がないことに注意してください。追加する必要はありません。この方法では常に単一の行が選択されます。

于 2012-08-09T07:07:46.420 に答える