簡體   English   中英

用戶輸入到mysql語句

[英]User Input to mysql statement

我有一個bash腳本,我想用它從數據庫中提取IP地址。 我似乎無法讓$ 1出現。

命令是:./goto.sh 2010。

我希望它采用2010年並在數據庫中搜索它。

goto.sh:

#!/bin/bash
ip=`mysql -Ns wksips -e 'SELECT IP FROM ips WHERE ID LIKE '%'''$1''';`

echo $ip

我有%符號,因為所有單位均以wks開頭,例如wks2010。

我嘗試過更改引號,但是在mysql中運行時仍然失敗。

++ mysql -Ns wksips -e'從ips中選擇ID為%$ 1的ips'錯誤1064(42000)在第1行:SQL語法有錯誤; 檢查與您的MariaDB服務器版本相對應的手冊,以在第1行的'%$ 1'附近使用正確的語法

感謝任何幫助。

我會這樣寫:

ip=$(mysql -Ns wksips -e "SELECT IP FROM ips WHERE ID LIKE '%$1'")

在shell參數級別使用雙引號,這樣可以在雙引號字符串內擴展$1類的變量。

然后,僅使用單引號將SQL語法中的字符串文字定界。

我更喜歡$(...)而不是反引號,來代替Shell中的命令。 使用$(...)很棒,因為如果命令本身需要一些命令替換,則可以根據需要繼續嵌套這些結構。 反斜杠做同樣的事情需要反斜杠,這令人發瘋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM