0

我试图从列卧室svo 中获取第一个字符,并在 PHP 中的此查询中获得完全有用的“无效语法”。我试过用 ' 等切换' ,但仍然得到同样的东西......我做错了什么?

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

5 回答 5

4

请不要这样做(@...)。您正在抑制可能有效的错误。

您还需要停止使用mysql_函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。

你想这样使用SUBSTR(位置 1 是1,不是0):

SELECT mlnum, 
       Substr(bedroomssvo, 1, 1) AS bedroomssvo, 
       totalfullbaths, 
       arealiving 
FROM   naples_single_family 

文档

于 2013-02-22T19:44:11.327 回答
3

所以,我在这里看到了几个问题:

SELECT mlnum, , `.substr('bedroomssvo',0,1).`,totalfullbaths, arealiving 
    FROM naples_Single_Family
  • mlnum 后面多了一个逗号。
  • .substr('bedroomssvo',0,1).意思是“列.substr('bedroomssvo',0,1).”,我不认为你想要那个。
  • substr并且substring在 SQL 中的第一个字符索引为 1(而在大多数语言中它是 0 索引)

所以问题是,您是要获取'bedroomssvo'(始终是'b')的子字符串,还是要获取名为的列的子字符串bedroomssvo?我怀疑是后者。该查询将是:

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

请注意我是如何去掉所有引号、刻度和.'s 的?那是因为您不需要转义任何内容,也不需要围绕列名进行任何有趣的业务。(除此之外:as bedroomssvo_first_char是可选的,但它使您的输出更容易理解)。

另一方面,如果你想获取你可以在 PHP 中访问的变量的子字符串,那么你可以这样做:

"SELECT mlnum, '{$yourString[0]}',totalfullbaths, arealiving 
    FROM naples_Single_Family"
于 2013-02-22T19:47:21.667 回答
2

您使用的是反引号而不是引号,您不必转义 mysql 函数。这将起作用。

$query = mysql_query("SELECT mlnum, SUBSTR(bedroomssvo,1,1),totalfullbaths, arealiving FROM naples_Single_Family);
于 2013-02-22T19:48:01.180 回答
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
于 2013-02-22T19:44:13.027 回答
1

采用

SUBSTR(column_name,1,x)

在哪里:

  1. 列名(字段名)
  2. 1:起始索引:请不要在mysql中起始索引为1
  3. x = 整数(长度)

采用:

SUBSTR('text',1,x)

对于文本

参考:SUBSTR()

于 2013-02-22T19:48:58.943 回答