2013-02-22 92 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()