有關(guān)MYSQL的引號(hào)問題
引號(hào)一般用在字段的值,如果字段值是字符或字符串,則要加引號(hào),如:select=‘字段值‘不加反引號(hào)建的表不能包含MYSQL保留字,否則出錯(cuò)反引號(hào)`,數(shù)字1左邊的符號(hào)。
我們仔細(xì)看了下,這個(gè)SQL,的確沒有什么問題,where條件也是正常的,大意就是將這個(gè)地址的前面加字符串bj1062,是真的沒有錯(cuò)誤么?是的沒有錯(cuò)誤。開發(fā)執(zhí)行完成后,結(jié)果的確是符合預(yù)期。
反引號(hào):它是為了區(qū)分MYSQL的保留字與普通字符而引入的符號(hào)。有MYSQL保留字作為字段的,必須加上反引號(hào)來區(qū)分。
現(xiàn)在面試官突然這么一問,張工也說不出個(gè)所以然來。面試官讓他回去等通知。我們知道MySql索引可以加快數(shù)據(jù)檢索速度,這也是使用的索引的最主要原因。
MySQL中反引號(hào)和引號(hào)的區(qū)別及用法
MySql中用一對(duì)反引號(hào)`來標(biāo)注SQL語句中的標(biāo)識(shí),如數(shù)據(jù)庫名、表名、字段名等。
反單引號(hào)(backquote),又讀反引號(hào),是西文字符中的附加符號(hào),主要用于計(jì)算機(jī)相關(guān)領(lǐng)域。位置在鍵盤中數(shù)字鍵“1”的左邊,其上檔符號(hào)是“~ ”,使用Shift鍵可以換擋輸入。
在test表中,有個(gè)select字段,如果不用反引號(hào),MYSQL將把select視為保留字而導(dǎo)致出錯(cuò),所以,有MYSQL保留字作為字段的,必須加上反引號(hào)來區(qū)分。
雙引號(hào)在最外層,是用來包含這個(gè)SQL語句的,單引號(hào)是用來包含字符串的,當(dāng)表中的字段為char或者varchar時(shí),數(shù)據(jù)要用單引號(hào)包括起來。
反單引號(hào)有什么作用呢?
1、反單引號(hào)(backquote),又讀反引號(hào),是西文字符中的附加符號(hào),主要用于計(jì)算機(jī)相關(guān)領(lǐng)域。位置在鍵盤中數(shù)字鍵“1”的左邊,其上檔符號(hào)是“~ ”,使用Shift鍵可以換擋輸入。
2、雙引號(hào)在最外層,是用來包含這個(gè)SQL語句的,單引號(hào)是用來包含字符串的,當(dāng)表中的字段為char或者varchar時(shí),數(shù)據(jù)要用單引號(hào)包括起來。
3、反單引號(hào)也稱重音符,是西文字符,主要用于計(jì)算機(jī)相關(guān)領(lǐng)域。位置在鍵盤中數(shù)字鍵“1”的左邊,其上檔符號(hào)是“~”,使用Shift鍵可以換擋輸入。由于計(jì)算機(jī)顯示的原因,反單引號(hào)非常容易和單引號(hào) ‘混淆。
sql系統(tǒng)關(guān)鍵字轉(zhuǎn)義
1、所以為了兼顧mysql和oralce,最好的辦法是修改字段名,不要涉及sql系統(tǒng)關(guān)鍵字和特殊字段。
2、兩種比較常見的方式 :用中括號(hào)[ ]轉(zhuǎn)義。 用關(guān)鍵字ESCAPE 轉(zhuǎn)義。延展知識(shí):用中括號(hào)[]轉(zhuǎn)義 。例子:WHERE ColumnA LIKE aaa[_]bbb --- .用關(guān)鍵字ESCAPE 轉(zhuǎn)義。
3、用ESCAPE關(guān)鍵字指定轉(zhuǎn)義字符。\x0d\x0a例如,要匹配以字符串A_C“開頭,可以這么寫:\x0d\x0a select id from #t where id like A!_C% ESCAPE !\x0d\x0a\x0d\x0a也可以將下劃線放在中括號(hào)里。
php操作數(shù)據(jù)庫WHERE語句查詢中文報(bào)錯(cuò),無法讀取數(shù)據(jù)?
1、第一個(gè)是數(shù)據(jù)庫的編碼和你的頁面編碼不一致。要保持都為utf8;第二個(gè) 是你的表名一定錯(cuò)了,table是系統(tǒng)默認(rèn)的關(guān)鍵字,不能用作表名字的。
2、view.php中 query = select * from sing_board_data where no=$no and id=$id;該代碼中$no沒有定義吧,你確認(rèn)下。
3、MYSQL數(shù)據(jù)庫的編碼是utf8,與PHP網(wǎng)頁的編碼格式不一致,就會(huì)造成MYSQL中的中文亂碼。
4、mysql_query(set names gb2312 );---加這句話!這樣,有2,3兩步實(shí)現(xiàn)了編碼及存儲(chǔ)入表的匹配。
5、list=D(QA1)-where($whereS)-limit($first,$pagesize)-order($sort $order)-select();這樣試試吧。