国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) php教程 關(guān)於PHP中操作MySQL資料庫的一些要注意的問題_PHP教程

關(guān)於PHP中操作MySQL資料庫的一些要注意的問題_PHP教程

Jul 21, 2016 pm 04:09 PM
mysql php 關(guān)於 操作 資料庫 注意 問題


關(guān)於PHP中操作MySQL資料庫的一些要注意的問題 1. 分號(hào)的例外

對(duì)於MySQL ,第一件你必須牢記的是它的每一行命令都是用分號(hào)(;) 作為結(jié)束的,但…沒有完全絕對(duì)的事,在這也是一樣,當(dāng)一行MySQL 插入在PHP 程式碼中時(shí),最好把後面的分號(hào)省略掉,例如:

mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ('$first_name' , $last_name')");

這是因?yàn)镻HP 也是以分號(hào)作為一行的結(jié)束的,額外的分號(hào)有時(shí)會(huì)讓PHP 的語法分析器搞不明白,所以還是省略掉的好。在這種情況下,雖然省略了分號(hào),但是 PHP 在執(zhí)行 MySQL 指令時(shí)會(huì)自動(dòng)的幫你加的。

另外還有一個(gè)不要加分號(hào)的情況。當(dāng)你想把要欄位的豎者排列顯示下來,而不是像通常的那樣橫著排列時(shí),你可以用G 來結(jié)束一行SQL 語句,這時(shí)就用不上分號(hào)了,例如:

SELECT * FROM PENPALS WHERE USER_ID = 1G


2. TEXT、DATE、和SET 資料型別

MySQL 資料表的欄位必須有定義一個(gè)資料型態(tài)。這有大約 25 種選擇,大部分都是直接明了的,就不多費(fèi)口舌了。但有幾個(gè)有必要提一下。

TEXT 不是一種資料型,雖然可能有些書上是這麼說的。它實(shí)際上應(yīng)該是“ LONG VARCHAR ”或“ MEDIUMTEXT ”。

DATE 資料型別的格式是 YYYY-MM-DD ,例如: 1999-12-08 。你可以很容易的用date 函數(shù)來得到這種格式的當(dāng)前系統(tǒng)時(shí)間: date("Y-m-d")

並且,在DATA 資料型別之間可以作減法,得到相差的時(shí)間天數(shù):

$age = ($current_date - $birthdate);

集合SET 是一個(gè)有用的資料類型,它和枚舉ENUM 有點(diǎn)相似,只不過是SET 能夠保存多個(gè)值而ENUM能保存一個(gè)值而已。而且, SET 類型最多只能夠有 64 個(gè)預(yù)定的值,而 ENUM 類型卻能夠處理最多 65,535 個(gè)預(yù)先定義的值。而如果需要有大於 64 個(gè)值的集合,該怎麼辦呢?這時(shí)就需要定義多個(gè)集合來一起解決這個(gè)問題了。

3. 通配符

SQL 的通配符有兩種:「 * 」和「 % 」。分別用在不同的情況。例如:如果你想看到資料庫的所有內(nèi)容,可以像這樣來查詢:

SELECT * FROM dbname WHERE USER_ID LIKE '%';

這兒,兩個(gè)通配符都被用上了。他們表示相同的意思 ?? 都是用來匹配任何的字串,但是他們用在不同的上下文中。 “ * ”用來匹配字段名,而“ % ”用來匹配字段值。另外一個(gè)不容易引起注意的地方是「 % 」通配符需要和 LIKE 關(guān)鍵字一起使用。

還有一個(gè)通配符,就是下劃線“ _ ”,它代表的意思和上面不同,是用來匹配任何單一的字符的。


4. NOT NULL 和空記錄

如果使用者在沒有填任何東西的情況下按了 submit 按鈕,會(huì)怎麼樣呢?如果你確實(shí)需要一個(gè)值,那麼可以用客戶端腳本或伺服器端腳本來進(jìn)行資料驗(yàn)證,這一點(diǎn)在前面已經(jīng)說過了。但是,在資料庫中卻是允許一些欄位被空出來什麼也不填。對(duì)此類紀(jì)錄, MySQL 將要為之執(zhí)行一些事情:插入值 NULL ,這是預(yù)設(shè)的操作。
如果你在欄位定義中為之宣告了 NOT NULL (在建立或修改這個(gè)欄位的時(shí)候), MySQL 會(huì)把這個(gè)欄位空出來什麼東西也不填。對(duì)於一個(gè) ENUM 枚舉類型的字段,如果你為此聲明了 NOT NULL , MySQL 將把枚舉集的第一個(gè)值插入到字段中。也就是說, MySQL 把枚舉集的第一個(gè)值當(dāng)作這個(gè)枚舉類型的預(yù)設(shè)值。

一個(gè)值為 NULL 的紀(jì)錄和一個(gè)空紀(jì)錄是有一些區(qū)別的。 % 通配符可以匹配空紀(jì)錄,但是卻不能匹配 NULL 紀(jì)錄。在某些時(shí)候,這種差異會(huì)造成一些意想不到的後果。就我的經(jīng)驗(yàn)而言,任何欄位都應(yīng)該宣告為 NOT NULL 。這樣下面的SELECT 查詢語句就能夠正常運(yùn)作了:

if (!$CITY) {$CITY = "%";}

$selectresult = mysql_query ("SELECT * FROM dbname
WHERE FIRST_NAME = ' 柳'
AND LAST_NAME = ' 如風(fēng)'
AND CITY LIKE '$CITY'
");

在第一行中,如果使用者沒有指定一個(gè)CITY 值,那麼就會(huì)用通配符% 來代入CITY 變量,這樣搜尋時(shí)就會(huì)把任何的CITY 值都考慮進(jìn)去,甚至包括那些CITY 欄位為空的紀(jì)錄。

但如果有一些紀(jì)錄,它的 CITY 欄位值為 NULL ,這時(shí)問題就出現(xiàn)了。上面的查詢是不能夠找到這些欄位的。問題的一個(gè)解決方法可以是這樣:

if (!$CITY) { $CITY = "%"; }

$selectresult = mysql_query ("SELECT * FROM dbname
WHERE FIRST_NAME = ' 柳'
AND LAST_NAME = ' 如風(fēng)'
AND (CITY LIKE '$CITY' OR CITY IS NULL)
");

注意在搜尋NULL 時(shí),必須用「 IS 」關(guān)鍵字,而LIKE 時(shí)不會(huì)正常運(yùn)作的。

在最後要提到的是,如果你在加入或修改一個(gè)新的欄位之前,資料庫中已經(jīng)有了一些記錄了,這時(shí)新加入的欄位在原來的紀(jì)錄中的值,可能是NULL ,也可能為空。這也算是 MySQL 的一個(gè) Bug 吧,所以在這種情況下,使用 SELECT 查詢要特別的小心。

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/314369.htmlTechArticle關(guān)於PHP中操作MySQL資料庫的一些要注意的問題1. 分號(hào)的例外對(duì)於MySQL ,第一件你必須牢記的是它的每一行命令都是用分號(hào)(;) 作為結(jié)束的...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

在C中使用std :: Chrono 在C中使用std :: Chrono Jul 15, 2025 am 01:30 AM

std::chrono在C 中用於處理時(shí)間,包括獲取當(dāng)前時(shí)間、測量執(zhí)行時(shí)間、操作時(shí)間點(diǎn)與持續(xù)時(shí)間及格式化解析時(shí)間。 1.獲取當(dāng)前時(shí)間使用std::chrono::system_clock::now(),可轉(zhuǎn)換為可讀字符串但係統(tǒng)時(shí)鐘可能不單調(diào);2.測量執(zhí)行時(shí)間應(yīng)使用std::chrono::steady_clock以確保單調(diào)性,並通過duration_cast轉(zhuǎn)換為毫秒、秒等單位;3.時(shí)間點(diǎn)(time_point)和持續(xù)時(shí)間(duration)可相互操作,但需注意單位兼容性和時(shí)鐘紀(jì)元(epoch)

PHP如何處理環(huán)境變量? PHP如何處理環(huán)境變量? Jul 14, 2025 am 03:01 AM

toAccessenvironmentVariablesInphp,useGetenv()或$ _envsuperglobal.1.getEnv('var_name')retievesSpecificvariable.2。 $ _ en v ['var_name'] accessesvariablesifvariables_orderInphp.iniincludes“ e” .setVariablesViaCliWithvar = vualitephpscript.php,inapach

mysql公共表表達(dá)式(CTE)示例 mysql公共表表達(dá)式(CTE)示例 Jul 14, 2025 am 02:28 AM

CTE是MySQL中用於簡化複雜查詢的臨時(shí)結(jié)果集。它在當(dāng)前查詢中可多次引用,提升代碼可讀性和維護(hù)性。例如,在orders表中查找每個(gè)用戶的最新訂單時(shí),可通過CTE先獲取每個(gè)用戶的最新訂單日期,再與原表關(guān)聯(lián)獲取完整記錄。相比子查詢,CTE結(jié)構(gòu)更清晰,邏輯更易調(diào)試。使用技巧包括明確別名、串聯(lián)多個(gè)CTE以及利用遞歸CTE處理樹形數(shù)據(jù)。掌握CTE能使SQL更優(yōu)雅高效。

php準(zhǔn)備的語句與條款 php準(zhǔn)備的語句與條款 Jul 14, 2025 am 02:56 AM

使用PHP預(yù)處理語句執(zhí)行帶有IN子句的查詢時(shí),1.需根據(jù)數(shù)組長度動(dòng)態(tài)生成佔(zhàn)位符;2.使用PDO時(shí)可直接傳入數(shù)組,用array_values確保索引連續(xù);3.使用mysqli時(shí)需構(gòu)造類型字符串並綁定參數(shù),注意展開數(shù)組的方式及版本兼容性;4.避免拼接SQL、處理空數(shù)組和確保數(shù)據(jù)類型匹配。具體做法是:先用implode與array_fill生成佔(zhàn)位符,再依擴(kuò)展特性綁定參數(shù),從而安全執(zhí)行IN查詢。

為什麼我們?cè)u(píng)論:PHP指南 為什麼我們?cè)u(píng)論:PHP指南 Jul 15, 2025 am 02:48 AM

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

如何避免PHP中未定義的索引錯(cuò)誤 如何避免PHP中未定義的索引錯(cuò)誤 Jul 14, 2025 am 02:51 AM

避免“undefinedindex”錯(cuò)誤的關(guān)鍵方法有三:首先,使用isset()檢查數(shù)組鍵是否存在並確保值不為null,適用於大多數(shù)常規(guī)場景;其次,使用array_key_exists()僅判斷鍵是否存在,適用於需要區(qū)分鍵不存在和值為null的情況;最後,使用空合併運(yùn)算符??(PHP7 )簡潔地設(shè)置默認(rèn)值,推薦用於現(xiàn)代PHP項(xiàng)目,同時(shí)注意表單字段名拼寫、謹(jǐn)慎使用extract()及遍歷前檢查數(shù)組非空以進(jìn)一步規(guī)避風(fēng)險(xiǎn)。

為MySQL表中的列選擇適當(dāng)?shù)臄?shù)據(jù)類型 為MySQL表中的列選擇適當(dāng)?shù)臄?shù)據(jù)類型 Jul 15, 2025 am 02:25 AM

insetTingUpmysqltables,選擇theStherightDatatatPesisionCrucialForeffifeffifeffifeffificeFifeffifeFrifeFifeScalible

PHP標(biāo)頭重定向不起作用 PHP標(biāo)頭重定向不起作用 Jul 14, 2025 am 01:59 AM

header函數(shù)跳轉(zhuǎn)失敗原因及解決方法:1.header前已有輸出,需檢查並移除所有前置輸出或使用ob_start()緩衝;2.未加exit導(dǎo)致後續(xù)代碼干擾,應(yīng)在跳轉(zhuǎn)後立即添加exit或die;3.路徑錯(cuò)誤應(yīng)使用絕對(duì)路徑或動(dòng)態(tài)拼接確保正確;4.服務(wù)器配置或緩存干擾可嘗試清除緩存或更換環(huán)境測試。

See all articles