如何将mysql子串选择值存储到php变量中?

时间:2015-12-10 14:19:51

标签: php mysql

我尝试了不同的解决方案: 第一:

>>> 0>None
True
>>> 4>None
True
>>> -4>None
True
>>> 4<None
False
>>> 0<None
False
>>> -2<None
False

第二

SELECT DISTINCT LEFT(EVENTNAAME, 1) FROM EVENTS WHERE DATE >= CURDATE()

两者都在phpMyAdmin中工作,但在我的php文件中,结果为空,因为它无法存储到变量中。

我做到了:

SELECT DISTINCT SUBSTRING(EVENTNAAME, 1, 1) FROM EVENTS WHERE DATE >= CURDATE()

var_dump delievers:

while ( $row = mysqli_fetch_object ( $result) ) {
     $title = $row->EVENTNAME;
}

但变量为空。如果我在没有子字符串的情况下进行选择,或者完全显示事件的名称。

但我只想显示事件名的第一个字符并将其用作标题。因此我使用distinct,因为如果有一个事件具有相同的第一个字母,那么它只提供一个结果。

但这不是我的问题。我的问题是如何将其存储到php变量中,如果我不使用left或substring以及事件的完整名称,为什么它可以工作?

抱歉英语不好,我希望你能提供帮助。

2 个答案:

答案 0 :(得分:0)

使用AS:

SELECT DISTINCT LEFT(EVENTNAME, 1) AS EVENTNAME FROM EVENTS WHERE DATE >= CURDATE()

答案 1 :(得分:0)

您需要为字段名称添加别名。一旦您申请表格或以其他方式创建&#34;衍生品&#34;查询中字段的值,该字段的名称不是php在获取行时将其视为名称的内容,例如:

SELECT foo, AVG(foo), SUM(foo), ...

会(不是真的,仅举例)产生

$row['foo'], $row['AVG(foo)'], $row['SUM(foo)']

在结果行中。

如果您对字段进行别名,则您可以完全控制字段名称在结果中的显示方式:

SELECT foo, AVG(foo) AS argle, SUM(foo) AS bargle
                     ^^^^^^^^           ^^^^^^^^^
$row['foo'], $row['argle'], $row['bargle']