1. 程式人生 > >mysql_real_escape_string 什麼時候會返回false

mysql_real_escape_string 什麼時候會返回false

今天遇到一個奇葩的問題 ,mysql_real_escape_string返回false;

 $vvv['singer_name'] = '2PM'; //2PM 是介面的資料
$singer_name = mysql_real_escape_string($vvv['singer_name']);
echo $singer_name; //輸出false 

此上直接執行則沒事兒,2PM是介面資料,所以才有問題;

 換成mysql_escape_string 則沒事兒

難道是編碼問題?

百度谷歌、查手冊都沒找到答案,然後看了一下PHP原始碼

PHP_FUNCTION(mysql_real_escape_string)
{
	zval *mysql_link = NULL;
	char *str;
	char *new_str;
	int id = -1, str_len, new_str_len;
	php_mysql_conn *mysql;


	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|r", &str, &str_len, &mysql_link) == FAILURE) {
		return;
	}

	if (ZEND_NUM_ARGS() == 1) {
		id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
		CHECK_LINK(id);
	}

	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, "MySQL-Link", le_link, le_plink);

	new_str = safe_emalloc(str_len, 2, 1);
	new_str_len = mysql_real_escape_string(mysql->conn, new_str, str, str_len);
	new_str = erealloc(new_str, new_str_len + 1);

	RETURN_STRINGL(new_str, new_str_len, 0);
}

後來問師傅得知,第二個引數是資料庫連線控制代碼,問起學習方法,是查的英文手冊,我這才知道中英文手冊內容是不一樣的。

但是還有一個疑問,為何我本來測試沒有返回fasle呢,就一個php頁面,也沒有連線資料庫,原因在於mysql_connect() 預設連線成功即可;

然後測試確實是,開發機上mysql_connect不能成功,我的本地就能成功,而mysql_connect預設連線成功與否由php.ini配置。

相關推薦

mysql_real_escape_string 什麼時候返回false

今天遇到一個奇葩的問題 ,mysql_real_escape_string返回false;  $vvv['singer_name'] = '2PM'; //2PM 是介面的資料 $singer_name = mysql_real_escape_string($vvv

獲取表格中列值時,空格符也加進去,導致判斷陣列中是否獲取列值返回false

//初始化已選優惠券編碼 var discountTbody=document.getElementById('discountTbody'); var discountRows=discountTbody.rows; var selectCouponList=[]; con

使用ThinkPhp3.2.3 的S函式,鍵不能是小駝峰形式,返回false

public function getAccessToken() { $res = S('yZAccessToken'); if ($res) {//這邊都是false echo 1;//一直都是不會

獲取表格中列值時,空格符也加進去,導致判斷陣列中是否包含列值時會返回false

//初始化已選優惠券編碼 var discountTbody=document.getElementById('discountTbody'); var discountRows=discountTbody.rows; var selectCouponList=[]; console.l

奇怪的Java題:為什麼1000 == 1000返回False,而100 == 100返回為True?

這是我們今天要討論的話題,因為我覺得它非常的有趣。 如果你執行如下程式碼: 1 2 3 4 Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c =

今天面試問了一道題。說一串字符串由這幾個符號組成"<>{}[]()”,寫一個算法,例如如果組成方式為“<>{[]}{}()”這種,也就是XML格式那種則返回true。否則返回false

length 分享 void ges 調用 new sta image package 原創 今天面試問了一道題。說一串字符串由這幾個符號組成"<>{}[]()”,寫一個算法,例如如果組成方式為“<>{[]}{}()”這種,也就是XML格式那種則返回

select sum也返回null值

img -1 .com null 數據 image 如果 tail sel SELECT SUM(detail.VAL) FROM AI_SDP_ORDER_MONTH_DETAIL_201706 detail 如果所有的VAL都是null的話,或者根本就

Apache、IIS、Nginx等絕大多數web服務器,都不允許靜態文件響應POST請求,否則返回“HTTP/1.1 405 Method not allowed”錯誤。

.com rewrite requested gin pos 2.0 $2 127.0.0.1 page   例1:用Linux下的curl命令發送POST請求給Apache服務器上的HTML靜態頁 [root@new-host ~]# curl -d 1=1 http:/

php 反序列化返回false解決方法

反序 blog $2 序列化 nbsp post 序列 php replace function mb_unserialize($serial_str) { $serial_str= preg_replace(‘!s:(\d+):"(.*?)";

Js parsetInt() 字符串轉換,只能轉換字符串,數字開頭的才返回數值,否則為NaN,空字符串也返回NaN

gpo 字符串 開頭 col color OS 轉換 class 字符串轉換 alert(parseInt(‘456lee‘)); //456,返回正數部分 alert(parseInt(‘lee456lee‘));

php fopen函數返回false

apach linux 權限 只讀 isa color pen als vim 發現 使用yum安裝的apache2.4.6 php 7.2.2 正確安裝後使用fopen()函數打開文件時返回false 百度一下又三種原因 1、目錄或者文件夾權限原因 (可以用

php curl返回false----curl調用微信創建自定義菜單返回false

php curl返回false curl函數 在調用微信公眾平臺的創建自定義菜單接口來創建自定義菜單時遇到一個大坑,php curl返回false一直無法調試通過,代碼如下: > //創建菜單public function menu_create($data){$url =" htt

file_put_contents執行返回false,file_put_contents false(linux服務器httpd)

bsp 關閉selinux lin sys chcon stat CI 返回 sel file_put_contents執行返回false,file_put_contents false(linux服務器httpd) 默認下selinux是開啟的查看SELinux狀

$(this).form("validate") 始終返回false

解決 插件 bsp 網址 一起 htm 更新 eset datebox onsubmit 提交前觸發,返回 false 來阻止提交動作。 validate 進行表單字段驗證,當全部字段都有效時返回 true 。該方法和 validatebox 插件一起使用。 解決:註釋

vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效解決方法

tip child 是我 pre gre 調用 2.0 技術 lis 我要實現的功能是在上傳文件之前校驗是否表格中存在重復的數據,有的話,需要彈窗提示是否覆蓋,確認之後繼續上傳,取消之後,就不再上傳。 項目中用的element-ui是V1.4.3 <el-upload

關於JavaGUI中getSource總是返回false解決

關於這個問題,首先我們應該區分一下getActionCommand()跟getSource()的區別 getActionCommand():Returns the command name of the action event fired by this button. If the comma

為什麼fork呼叫返回兩次

    fork大家可能都比較熟悉,呼叫一次返回2次,返回pid>0為父程序,pid=0為子程序。一直對fork方法如何返回兩次有些疑惑,函式呼叫一次通常只返回一個結果,fork呼叫怎麼會返回2次?之前查過原因,時間久了有些忘了,今天上網又查了下,其實大家說

c++ dll匯出函式返回false值C#卻認為是true的處理方法

轉發網址https://stackoverflow.com/questions/1792581/c-from-c-c-function-in-a-dll-returning-false-but-c-sharp-thinks-its-tr 在C++中宣告匯出函式 bool Foo()

Effective_STL 學習筆記(二十一) 永遠讓比較函式對相等的值返回 false

  除非比較函式總是為相等的值返回 false,否則將會打破所有的標準關聯容器, 不管關聯容器是否允許存在副本(set、map、multiset、multimap) 對於(set、map)使用 less_equal (<=): 1   !( 10A <= 10B ) &a

Java:簡述1000==1000返回false,100==100返回true

Java:簡述1000 = = 1000返回false,100 = = 100返回true 大家覺得如下程式碼的結果是什麼呢? public static void main(String[] args) { Integer a = 1000, b =