国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php發(fā)送Sql語句遇到的坑

light / 1810人閱讀

摘要:坑一報的第一個錯誤是關于的這個報錯字面意思是這個函數(shù)的參數(shù)應該接受一個的參數(shù),但實際運行時,傳進去的參數(shù)是一個布爾值。在我的代碼中,是查詢后的結(jié)果,我的代碼應該看起來沒有問題,而錯誤提示是一個布爾值,可能是我的查詢語句出現(xiàn)了問題。

php發(fā)送Sql語句遇到的坑

標簽: php


先在這里貼一下代碼:

返回登陸頁面";
        } 
    }else{
        echo "用戶不存在";
        //echo "返回登陸頁面";
    }
?>

作為一個php小白,寫了40行代碼,挖了不少坑,大家可以借助一下這段代碼檢驗一下自己的水平,哈哈哈哈哈。
下面講述的步驟,是我在逐漸解決的過程。

坑一: mysql_num_rows()

報的第一個錯誤是關于mysql_num_rows()的

mysql_num_rows() expects mysqli_result 1 to be resource,boolean given

這個報錯字面意思是這個函數(shù)的參數(shù)應該接受一個resource的參數(shù),但實際運行時,傳進去的參數(shù)是一個布爾值。
作為一個學習的心態(tài),還是應該先找一下關于這個函數(shù)的解釋:

用法:int mysql_num_rows ( resource $result )
mysql_num_rows() 返回結(jié)果集中行的數(shù)目。此命令僅對 SELECT 語句有效。要取得被 INSERT,UPDATE 或者 DELETE 查詢所影響到的行的數(shù)目,用 mysql_affected_rows()。

在我的代碼中,$result是查詢后的結(jié)果,我的代碼應該看起來沒有問題,而錯誤提示$result是一個布爾值,可能是我的查詢語句出現(xiàn)了問題。

坑二:發(fā)送sql語句

現(xiàn)在php菜鳥教程中找了其返回值的情況:

針對成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查詢,將返回一個 mysqli_result 對象。針對其他成功的查詢,將返回 TRUE。如果失敗,則返回 FALSE

看到這里,看到mysqli_result對象感覺看到了家人。覺得頓時有了頭緒。
關于$link:
我在mysqli_query()中傳入的參數(shù)$link其實是不對的,這個資源標識符是我登錄數(shù)據(jù)庫時候返回的,而不是選擇數(shù)據(jù)時候返回的。而數(shù)據(jù)庫才是我操作的對象,其中的邏輯千萬要搞明白。

坑三:sql語句

最后的問題就是出在了這里。

先說一下php里的變量解析:

在單引號字符串中的變量和特殊含義的字符將不會被替換。
用雙引號定義的 字符串 最重要的特征是變量會被解析

第一種情況:

$name = "lan";
echo "我是$name";

這在情況下,變量會被當作字符串處理,會輸出

我是$name

$name = "lan";
echo "我是$name";

在這種情況下,變量會被解析,輸出:

我是lan

詳情參見玩轉(zhuǎn)php變量解析

php中的{}

在我查找php拼接字符串的過程中,主要出現(xiàn)了兩種方法,一個就是直接使用雙引號進行變量解析,另外一種是使用.符號進行拼接。

雙引號出現(xiàn)了一種寫法:{$username} 讓我有一些困惑,在這里也說一下其作用:

(1). 表示{}里面的是一個變量 ,執(zhí)行時按照變量來處理

(2). 在字符串中引用變量使用的特殊包括方式,這樣就可以不使用.運算符,從而減少代碼的輸入量了
(3). 防止變量名和后面的字符串連在一起

使用.拼接sql語句
這是我在mysql的phpMyAdmin中自動生成的查詢語句

SELECT * FROM `user` WHERE `userName` LIKE "lan"

而這是我在運行的過程中輸出的拼接后的字符串:

SELECT * FROM `user` WHERE `userName` LIKE lan

仔細一下觀察一下可以看出輸出的語句中最后lan是沒有單引號的,這就是錯誤的根源了,可憐我一直沒有看到。

最后拼接成了這個樣子:

$check_query = "SELECT * FROM `user` WHERE `userName` LIKE".""".$username.""";
坑四:md5

md5() 函數(shù)計算字符串的 MD5 散列。主要用于加密.

調(diào)試到后面,前面的都能正確運行,但就是一直輸出密碼不對,想到,也許從數(shù)據(jù)庫里讀取的數(shù)據(jù),也要進行md5處理才能和進過md5處理的密碼比較,一試,果然對了。
其實可以在一開始注冊的時候,就把密碼md5加密儲存在數(shù)據(jù)中。

總結(jié)

是時候好好看看調(diào)試方法了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/21829.html

相關文章

  • CodeIgniter遇到的坑

    摘要:文件夾中的文件首字母大寫。因為在中我沒有找到日期和字符串轉(zhuǎn)換和格式化的靈活方法,所以在中處理格式化的問題。獲取參數(shù)由于框架自身設計的問題,推薦盡量用方式請求后臺服務,參數(shù)格式為格式。 1.controllers文件夾中的controller文件首字母大寫。不大寫也可以,但是環(huán)境兼容性不好,舉個例子,我開發(fā)環(huán)境在mac電腦上,文件名首字母小寫,服務可以正常訪問;但是在阿里云服務器(deb...

    andot 評論0 收藏0
  • PHP安全性防范方式

    摘要:注入注入是一種惡意攻擊,用戶利用在表單字段輸入語句的方式來影響正常的執(zhí)行。防范方式是針對非法的代碼包括單雙引號等,使用函數(shù)。如許多函數(shù),如可以包含或文件名防范方式過濾用戶輸入在中設置禁用和。這將禁用的遠程文件。 SQL注入 SQL注入是一種惡意攻擊,用戶利用在表單字段輸入SQL語句的方式來影響正常的SQL執(zhí)行。 防范方式 使用mysql_real_escape_string(),或者...

    chadLi 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.42 - MySQL:從刪庫到跑路

    摘要:肖鵬微博數(shù)據(jù)庫那些事兒肖鵬,微博研發(fā)中心技術(shù)經(jīng)理,主要負責微博數(shù)據(jù)庫相關的業(yè)務保障性能優(yōu)化架構(gòu)設計,以及周邊的自動化系統(tǒng)建設。經(jīng)歷了微博數(shù)據(jù)庫各個階段的架構(gòu)改造,包括服務保障及體系建設微博多機房部署微博平臺化改造等項目。 showImg(https://segmentfault.com/img/bV24Gs?w=900&h=385); 對于手握數(shù)據(jù)庫的開發(fā)人員來說,沒有誤刪過庫的人生是...

    aboutU 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<