2013-02-22 21 views
0

我想從列bedroomssvo獲得第一個字符,並且在PHP中的這個查詢中獲得完全有用的「無效語法」。我試過用'等'來切換,仍然得到同樣的東西......我做錯了什麼?在php中使用substr mysql的查詢語法

$query = @mysql_query("SELECT mlnum, , `.substr('bedroomssvo',0,1).`,totalfullbaths, arealiving FROM naples_Single_Family); 

回答

3

所以,我看到一對夫婦的問題在這裏:

SELECT mlnum, , `.substr('bedroomssvo',0,1).`,totalfullbaths, arealiving 
    FROM naples_Single_Family 
  • 你有mlnum後多餘的逗號。
  • .substr('bedroomssvo',0,1).的意思是「列.substr('bedroomssvo',0,1).」,我不認爲你想這樣。
  • substrsubstring必須在1 SQL(而在大多數語言是0索引)的第一個字符指數

所以現在的問題是,你試圖讓'bedroomssvo'子串(這將永遠是'b')或者你想獲得名爲bedroomssvo的列的子字符串?我懷疑後者是這種情況。該查詢將是:

SELECT mlnum, substr(bedroomssvo,1,1) as bedroomssvo_first_char,totalfullbaths, 
    arealiving FROM naples_Single_Family 

注意我是怎麼擺脫所有的報價中,蜱,並.的?那是因爲你不需要轉義任何東西,而且你不需要任何圍繞列名的有趣商業。 (另外:as bedroomssvo_first_char是可選的,但它使您的輸出更容易理解)。

在另一方面,如果你想獲得一個變量的子串,你必須在PHP訪問,那麼你可以這樣做:

"SELECT mlnum, '{$yourString[0]}',totalfullbaths, arealiving 
    FROM naples_Single_Family" 
+1

'pos'開始於1,'substr'不是0。 – Kermit 2013-02-22 19:50:50

+0

對不起。我在看到你的評論之前就已經明白了。 – cwallenpoole 2013-02-22 19:56:28

+0

非常好的幫助,非常感謝! – 2013-02-22 20:04:22

1

試試這個

SELECT mlnum , substr('bedroomssvo',0,1) ,totalfullbaths, arealiving FROM naples_Single_Family 

如果bedroomssvo是一列,然後用它像那樣

SELECT mlnum , substr(bedroomssvo,1,1) ,totalfullbaths, arealiving FROM naples_Single_Family 
+0

是本'bedroomssvo'列? – 2013-02-22 19:44:55

2

您正在使用反引號,而不是報價,你沒有逃避一個mysql函數。這將工作。

$query = mysql_query("SELECT mlnum, SUBSTR(bedroomssvo,1,1),totalfullbaths, arealiving FROM naples_Single_Family); 
1

使用

SUBSTR(column_name,1,x) 

其中:

  1. 列名(字段名)
  2. 1:起始索引:請未在MySQL的起始索引爲1
  3. X =整數(長度)

使用:

SUBSTR('text',1,x) 

對於文本

REF:SUBSTR()