2

$keyword我正在尝试使用(关键字可以是问题字段中的任何内容)从 MySql 中的表中检索电子邮件地址来识别该行。我通过下面的查询成功找到了我需要的行,但它返回了整行,如何将电子邮件从行中拉出并将其存储为$email

询问:

$result = mysql_query("SELECT * FROM ask WHERE date = '$keyword' order by ask_id")
or die(mysql_error());

桌子:

| ask_id | 商店 | 名称 | 姓名 | 电子邮件 | 电话 | 城市| 状态 | 邮编 |问题 | 货号 | 日期 |

4

4 回答 4

4

只需选择您需要的列email而不是全部*

$result = mysql_query("SELECT email FROM ask WHERE date = '$keyword' order by ask_id")

请注意,该mysql_*功能已弃用,最好切换到mysqliPDO。因此,您将能够使用prepared statements并且您将避免任何 mysql 注入的风险,请在此处了解更多信息如何防止 PHP 中的 SQL 注入?

于 2013-06-14T12:23:48.287 回答
1
SELECT `email` FROM ask WHERE date = '$keyword' order by ask_id

请改用上面的代码。SELECT * FROM...在您的 mysql 语句中意味着选择所有内容。

于 2013-06-14T12:23:41.860 回答
0

首先,强制 mysql_* 命令已弃用,不要使用它们,小猫会死,你的狗会被枪杀等。有关更多信息,请参阅这个问题

如果您只想从 MySQL 数据库中检索一列,您可以通过在 SELECT 之后指定列而不是星号来实现。所以你会有如下查询:

SELECT email FROM ask WHERE date = '$keyword' order by ask_id

您可以在 PHP 代码中按如下方式使用它:

$result = mysql_query("SELECT email FROM ask WHERE date = '$keyword' order by ask_id")
or die(mysql_error());

while($row = mysql_fetch_assoc($result)) {
    var_dump($row);
}

重申一下,您不应该使用 mysql_* 函数。有更好的替代品可用,如上面提到的问题中所述。

于 2013-06-14T12:23:51.257 回答
0

$result = mysql_query("SELECT columnName AS email FROM ask WHERE date = '" . $keyword . "' ORDER BY ask_id");
while($row = mysql_fetch_assoc($result)){
     $row['email']; // 在这里用电子邮件做任何事...
}

于 2013-06-14T12:48:55.287 回答