php
  • mysql
  • phpmyadmin
  • 2012-09-07 199 views 1 likes 
    1

    當我從PHP MyAdmin運行SQL查詢時,它會正確插入該行;當我從PHP運行它時,它不會。mySQL查詢不能從PHP工作,但在PHPMyAdmin中工作

    我將爲您提供每個文本;他們是相同的,但鑑於我可能錯過了某些東西,我不想假設沒有任何區別。

    在PHP中:

    在PHP MyAdmin
    $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); 
    

    現在:

    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') 
    

    注:我跑的PHP查詢無SET調用(3線設置變量)和它的工作;但我無法弄清楚這些行中的語法錯誤。還運行mysql_error,它聲明有一個語法錯誤 - 然後讓我看看手冊。非常有幫助,MySQL。

    +0

    我不會使用mysql_ *函數。他們已被棄用,並有充分的理由。閱讀更多在:http://www.php.net/manual/en/mysqlinfo.api.choosing.php –

    回答

    7

    mysql_query()不能一次執行多個查詢。

    兩個解決方案:

    1. 使用多個請求mysql_query線
    2. 使用的mysqli與multi_query()

    您的代碼,rewriten到多的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')"); 
    
    +0

    嗨,馬里斯,我最初要做多個查詢,但後來認爲:不做多個查詢減慢處理?我將有一個用戶等待命令已經通過的確認(因爲您可以看到該腳本涉及菜單),所以我認爲在單個Mysql查詢中運行所有內容會更快;我誤解了MySQL的工作原理嗎? – Laurent

    +0

    當然,單組查詢會快一點。您仍然嘗試運行多個查詢,但只有一個請求。我會重寫你的查詢到一個單一的查詢。檢查http://dev.mysql.com/doc/refman/5.0/en/insert-select.html –

    0

    您有以下選項:

    1. 使用多個查詢檢索值並進行最終查詢。
    2. 使用mysqli_query
    3. 製作存儲過程並調用它。 (推薦,那麼你不用擔心轉義字符)
    相關問題