2012-08-25 25 views
0

我一直在嘗試幾個小時來將行數據存儲到BASH var中,然後使用它來啓動一些PHP腳本。BASH腳本從mySQL獲取行數據並使用它來啓動PHP代碼

到目前爲止,我只能回顯出整個結果集。我已經打破了該腳本,所以我甚至無法將其粘貼到此處。這就是我所擁有的,那根本不起作用。

#! bin/bash 
query=`echo "SELECT id FROM searches WHERE running=1 AND id_user=2" | mysql -u root` 

我以前從未使用BASH,所以我完全失去了。

我要求的是一些資源,可以告訴我如何連接到mysql,然後使用該行中的數據循環訪問結果集。

謝謝。

回答

0

Bash不是與mysql進行交互的好語言,它只適用於非常簡單的情況。使用PHP而不是(因爲你提到的PHP),它有一個與mysql數據庫進行交互的api。是的,你可以使用run a php script,就像bash腳本一樣。

0

如果要使用MySQL運行單個命令,請使用mysql -emysql --execute。他們是相同的命令,但第二個版本更令人難忘。如果將此標誌添加到上面,那麼行將存儲在變量中。

但是,如geirha所述,BASH可能不是獲取行數據的最佳語言。但是如果你選擇解析它,希望BASH,mysql -e是執行查詢的正確命令。

2

您可以閱讀mysql --silent輸出到猛砸瓦爾與while read

>sql="SELECT id FROM searches WHERE running=1 AND id_user=2" 
>mysql --silent -u ctrahey test -e "$sql" |while read myid; do 
php -f my_processor.php $myid; 
done 
> 

注:

  • sql="...設置您的SQL Bash的變量(實際上沒有必要,只是助手可讀性)
  • mysql -e -e選項允許您傳遞查詢,因此您不需要STDIN
  • mysql --silent --silent通常會抑制額外的格式化。在我的測試中,這實際上也是不必要的(輸出中的管道字符並沒有搞亂Bash)
  • php -f ..這個執行一個php文件,傳遞當前的id作爲arg。
相關問題