2012-09-07 5 views
1

PHP MyAdmin에서 SQL 쿼리를 실행하면 라인이 올바르게 삽입됩니다. PHP에서 실행할 때, 그렇지 않습니다.mySQL 쿼리는 PHP에서 작동하지 않지만 PHPMyAdmin에서 작동합니다.

각 텍스트를 제공 할 예정입니다. 그들은 동일하지만 나는 뭔가를 놓쳤을지도 모르지만 나는 차이가 없다고 가정하고 싶지 않습니다.

이제
$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에서 : PHP에서

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.

+0

나는 mysql_ * 함수를 사용하지 않을 것입니다. 그것들은 더 이상 사용되지 않으며 좋은 이유가 있습니다. 더 많은 것을 읽으십시오 : http://www.php.net/manual/en/mysqlinfo.api.choosing.php –

답변

7

mysql_query()는 한 번에 여러 쿼리를 실행할 수 없습니다.

두 솔루션 : 복수는 mysql_query 라인에 rewriten multi_query()

귀하의 코드

  1. 를 사용하여 여러 상 mysql_query 라인
  2. 사용 mysqli :

    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')"); 
    
+0

안녕하세요, Maris, 저는 처음에 여러 개의 쿼리를 할 것입니다. 그렇지만 다음과 같은 생각을했습니다. 방법? 나는 주문이 끝났음을 확인하는 사용자 (스크립트가 메뉴를 포함하고있는 것을 볼 수있다)를 기다릴 것이고, 그래서 나는 하나의 MySQL 쿼리에서 모든 것을 실행하는 것이 더 빠를 것이라고 생각했다; MySQL의 작동 방식을 오해하고 있습니까? – Laurent

+0

물론 단일 쿼리 그룹이 조금 더 빠릅니다. 하나의 요청으로 많은 쿼리를 실행하려고 시도했습니다. 하나의 쿼리로 쿼리를 다시 작성합니다. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html을 확인하십시오. –

0

당신은 다음과 같은 옵션을 사용할 수 있습니다 :

  1. 여러 쿼리를 사용하여 값을 검색하고 최종 쿼리를 만듭니다.
  2. mysqli_query를 사용하십시오.
  3. 저장 프로 시저를 만들고 호출하십시오. (추천, 그럼 당신은 이스케이프 문자에 대해 걱정할 필요가 없습니다)
관련 문제