1

PHP MyAdmin から SQL クエリを実行すると、行が正しく挿入されます。PHPから実行すると、実行されません。

それぞれのテキストを提供します。それらは同じですが、何かを見落としている可能性があるため、違いがないとは思いたくありません。

PHPで:

$orderSend = "SET @typeSQL := (SELECT `typeID` FROM `ArbuckleType` WHERE `typeName` = 'A la Carte');

        SET @groupSQL:= (SELECT `groupID` FROM `ArbuckleGroup` WHERE (`groupName` = 'Nigiri' AND `typeID` = @typeSQL));

        SET @itemSQL:=(SELECT `itemID` FROM `ArbuckleItem` WHERE (`itemName` = 'Salmon' AND `groupID` = @groupSQL));

        INSERT INTO `ArbuckleOrderDetails` VALUES('', '$orderID', @typeSQL,@groupSQL, @itemSQL, '$quantity', '$spicy')";
mysql_query($orderSend);

今PHP MyAdminで:

SET @type := (SELECT `typeID` FROM `ArbuckleType` WHERE `typeName` = 'A la Carte');# MySQL returned an empty result set (i.e. zero rows).  

        SET @group:= (SELECT `groupID` FROM `ArbuckleGroup` WHERE (`groupName` = 'Nigiri' AND `typeID` = @type));# MySQL returned an empty result set (i.e. zero rows).

        SET @item:=(SELECT `itemID` FROM `ArbuckleItem` WHERE (`itemName` = 'Salmon' AND `groupID` = @group));# MySQL returned an empty result set (i.e. zero rows).

INSERT INTO `ArbuckleOrderDetails` VALUES('', '$orderID', @type,@group, @item, '$quantity', '$spicy')

注:SET呼び出し(変数を設定する3行)なしでPHPクエリを実行しましたが、うまくいきました。しかし、それらの行のどこに間違った構文があるのか​​ わかりません。また、mysql_error を実行すると、構文エラーがあると表示され、マニュアルを参照するように求められます。とても役に立ちました、mysql。

4

2 に答える 2

7

mysql_query() は一度に複数のクエリを実行できません。

2 つのソリューション:

  1. 複数の mysql_query 行を使用する
  2. multi_query()で mysqliを使用する

あなたのコードは、複数の mysql_query 行に書き直されました:

mysql_query("SET @typeSQL := (SELECT `typeID` FROM `ArbuckleType` WHERE `typeName` = 'A la Carte')");
mysql_query("SET @groupSQL:= (SELECT `groupID` FROM `ArbuckleGroup` WHERE (`groupName` = 'Nigiri' AND `typeID` = @typeSQL))");
mysql_query("SET @itemSQL:=(SELECT `itemID` FROM `ArbuckleItem` WHERE (`itemName` = 'Salmon' AND `groupID` = @groupSQL))");
mysql_query("INSERT INTO `ArbuckleOrderDetails` VALUES('', '$orderID', @typeSQL,@groupSQL, @itemSQL, '$quantity', '$spicy')");
于 2012-09-07T06:52:32.207 に答える
0

次のオプションがあります。

  1. 複数のクエリを使用して値を取得し、最終的なクエリを作成します。
  2. mysqli_queryを使用する
  3. ストアドプロシージャを作成して呼び出します。(推奨される場合は、エスケープ文字について心配する必要はありません)
于 2012-09-07T06:55:05.893 に答える