-1

問題なくphpmyadminで動作するSQLクエリがありますが、php mysql_QueryでSQL構文エラーが発生します

クエリ:

   SELECT `_id` INTO @task_id  
   FROM `SepidarSoft_Portal`.`Permission` 
   WHERE `FID`='1' and `GID`='Request' and `Permission`='Client' ;

   INSERT INTO `SepidarSoft_Portal`.`Permission` 
   SET `_id`=@task_id,`CTime`='1362128156',`CUser`='1',`FID`='1',`KFID`='0',`GID`='Request',`KGID`='1',`Permission`='Client',`Expired`='0',`Direction`='1',`Access`='200',`State`='1' 
   ON DUPLICATE KEY UPDATE `CTime`='1362128156',`CUser`='1',`FID`='1',`KFID`='0',`GID`='Request',`KGID`='1',`Permission`='Client',`Expired`='0',`Direction`='1',`Access`='200',`State`='1'

mysql_query はこのエラーを表示します

追加 SQL 構文にエラーがあります。'INSERT INTO の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してくださいSepidarSoft_PortalPermissionSET _id=@task_id, CTime='13621' at line 2

誰が問題が何であるか知っていますか?

4

5 に答える 5

2

mysql_query

mysql_query()は、指定されたlink_identifierに関連付けられているサーバー上の現在アクティブなデータベースに一意のクエリ(複数のクエリはサポートされていません)を送信します。

したがって、ステートメントを個別に実行してください。これはより安全です。

または、mysql_*拡張機能を使用する場合は、mysqli_multi_query()

mysqli_multi_query

セミコロンで連結された1つまたは複数のクエリを実行します。

ただし、スイッチPDOまたはmysqli_*拡張機能を使用することをお勧めします。mysql_*非推奨です。

于 2013-03-01T09:14:26.443 に答える
1

両方のクエリを別のコマンドで実行する必要があります。mysql_query()また、これはdeprecatedであるため、使用するようアドバイスする人の言うことを聞かないでください。代わりにmysqli_query()またはPDO関数を使用してください。

于 2013-03-01T09:14:59.603 に答える
0

この下で使用する必要があります:

INSERT INTO epidarSoft_Portal`.`Permission
         (column1, column2, column3, column4)
     VALUES
         ('" . $val1 . "',  '" . $val2 . "', '" . $val3 . "', '" . $val4 . "')
     ON DUPLICATE KEY UPDATE
         column2='" . $val2 . "',
         column3='" . $val3 . "',
         column4='" . $val4 . "'"
 );
于 2013-03-01T09:22:05.390 に答える
0

PHP で 2 つの個別の SQL クエリとして実行する必要があります。したがって、2 つの mysql_query() ステートメントを使用すると、エラーが発生しなくなります。

また、非推奨になった mysql_ ステートメントを使用せず、mysqli または PDO を使用するようにコードをアップグレードする必要があります。

于 2013-03-01T09:09:04.070 に答える
0

理由は次のとおりです。

mysql_query() は、指定された link_identifier に関連付けられているサーバー上の現在アクティブなデータベースに一意のクエリ (複数のクエリはサポートされていません) を送信します。

次の点に注意してください。MySQL 拡張機能を使用しないようにしてください。代わりに PDO または準備済みステートメントを使用してください。

于 2013-03-01T09:09:46.300 に答える