本文目錄一覽:
- 1、在學PHP,請問什麼情況下要用mysql_real_escape_string轉義?我知道用戶名要用,但是密碼要用嗎?
- 2、PHP中mysqli_query和mysqli_real_query 有什麼區別?
- 3、PHP下使用mysqli的函數連接mysql出現warning: mysqli::real_connect(): (hy000/1040): …
在學PHP,請問什麼情況下要用mysql_real_escape_string轉義?我知道用戶名要用,但是密碼要用嗎?
要用的呀,mysql_real_escape_string的用處就是對SQL注入進行過濾,任何用戶輸入的內容都是不可信任的,包括$_POST、$_GET、$_SESSION、$_COOKIE。
當你的SQL語句用到這幾個變數的時候,都要進行防SQL注入處理的,確定是數字的就加intval轉化,不確定的就用mysql_real_escape_string進行處理,這樣才可以說的上比較安全。
PHP中mysqli_query和mysqli_real_query 有什麼區別?
可以這麼講。因為很多PHP程序員不習慣面向對象編程,所以mysqli類庫提供了這個方法供他們使用。這也是方便一些使用mysql擴展的用戶快速遷移到mysqli。實際上,mysqli_query()內部是對面向對象調用過程的封裝。
我個人覺得還是面向對象的寫法比較簡潔,而mysqli_query()需要多傳遞一個參數。
PHP下使用mysqli的函數連接mysql出現warning: mysqli::real_connect(): (hy000/1040): …
背景:把mysql換成mysqli時出現,連接數過多,其實際上並不是,原因是我挪動了一下php的sock文件位置導致,因這幾個socket修改沒有修改完全,於是出現了too
many
connections
,從mysql里show
processlist並沒有發現真的有連接,其實用tshark抓下包估計能看到(),並沒有發出請求,而估計是mysqli的客戶端自己報出來的,別看這個問題小,搞了老半天,都想重新安裝Php了,發現原來是路徑寫錯了同時mysqli的客戶端提示連接數過多的誤提示導致方向走錯了。如下:
[root@iZ25z0ugwgtZ
etc]#
grep
-r
“mysql.sock”
./
./php.ini:pdo_mysql.default_socket=/data/runsock/mysqlsock/mysql.sock
./php.ini:;mysql.default_socket
=
/tmp/mysql.sock
./php.ini:mysql.default_socket
=
/data/runsock/mysqlsock/mysql.sock
./php.ini:mysqli.default_socket
=
/data/runsock/mysql.sock
//這個位置被挪動到,/data/runsock/mysqlsock/mysql.sock導致。
修改後記得重啟動php-fpm:
[root@iZ25z0ugwgtZ
etc]#
service
php-fpm
restart
Gracefully
shutting
down
php-fpm
.
done
Starting
php-fpm
done
______________________排查要點如下_______________________________
warning:
mysqli::real_connect():
(hy000/1040):
too
many
connections
in:
出現場景
:手動編譯安裝mysql,並制定安裝位置,php以localhost方式連接mysql
原因分析
:手動編譯安裝制定位置後所有的mysql文件都在制定的目錄或者data目錄下面,php默認只會尋找/temp/mysql.sock找這個sock文件,所以會導致sock文件無法找到。
解決方法
:
1.給sock文件做個軟鏈
ln
-s
/data/mysqldb/mysql.sock
/tmp/mysql.sock;
或者
2.修改php的默認mysql.sock連接地址
mysql.default_socket=/data/mysqldb/mysql.sock
3.使用tcp
socket的方式進行連接
mysql(‘127.0.0.1′,’username’,’passwod’);
下面給大家介紹PHP
mysql_connect()
函數
定義和用法
mysql_connect()
函數打開非持久的
MySQL
連接。
語法
mysql_connect(server,user,pwd,newlink,clientflag)
參數
描述
server
可選。規定要連接的伺服器。
可以包括埠號,例如
“hostname:port”,或者到本地套接字的路徑,例如對於
localhost
的
“:/path/to/socket”。
如果
PHP
指令
mysql.default_host
未定義(默認情況),則默認值是
‘localhost:3306’。
user
可選。用戶名。默認值是伺服器進程所有者的用戶名。
pwd
可選。密碼。默認值是空密碼。
newlink
可選。如果用同樣的參數第二次調用
mysql_connect(),將不會建立新連接,而將返回已經打開的連接標識。參數
new_link
改變此行為並使
mysql_connect()
總是打開新的連接,甚至當
mysql_connect()
曾在前面被用同樣的參數調用過。
clientflag
可選。client_flags
參數可以是以下常量的組合:
MYSQL_CLIENT_SSL
–
使用
SSL
加密
MYSQL_CLIENT_COMPRESS
–
使用壓縮協議
MYSQL_CLIENT_IGNORE_SPACE
–
允許函數名後的間隔
MYSQL_CLIENT_INTERACTIVE
–
允許關閉連接之前的交互超時非活動時間
返回值
如果成功,則返回一個
MySQL
連接標識,失敗則返回
FALSE。
提示和注釋
注釋:腳本一結束,到伺服器的連接就被關閉,除非之前已經明確調用
mysql_close()
關閉了。
提示:要創建一個持久連接,請使用
mysql_pconnect()
函數。
例子
?php
$con
=
mysql_connect(“localhost”,”mysql_user”,”mysql_pwd”);
if
(!$con)
{
die(‘Could
not
connect:
‘
.
mysql_error());
}
//
一些代碼…
mysql_close($con);
?
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127535.html