当我确切地知道我需要哪个列时,在PHP,MySQL中使用select

时间:2010-08-21 09:33:24

标签: php mysql select

现在我使用这段代码:

$welcome_text = mysql_query("SELECT * FROM `text` WHERE `name` = 'welcome'");
while ($row = mysql_fetch_array($welcome_text, MYSQL_ASSOC)) {
 echo $row['content'];
}

如果我确切知道我需要哪一列,是否可以在没有WHILE的情况下使用它? 像这样:

$welcome_text = mysql_query("SELECT 'content' FROM `text` WHERE `name` = 'welcome'");
echo $welcome_text;

由于

4 个答案:

答案 0 :(得分:3)

mysql_query进行查询,返回结果集。

mysql_fetch_array从结果集中获取第一行。

$welcome_text = mysql_query("SELECT * FROM `text` WHERE `name` = 'welcome'");
$row = mysql_fetch_array($welcome_text, MYSQL_ASSOC);
echo $row['content'];

当然,如果需要,可以缩短代码,但这可能会使代码更难以调试和维护。

详细,清晰的代码>单行“炫耀”代码。

包括'just-in-case'检查:

$welcome_text = mysql_query("SELECT * FROM `text` WHERE `name` = 'welcome'");
if($row = mysql_fetch_array($welcome_text, MYSQL_ASSOC)){
    echo $row['content'];
}

在打印之前,请务必确保您拥有所需物品。

最后,请确保在进入数据库之前清理用户提交的数据。如果您不打算使用prepared statements,请至少使用mysql_real_escape_string

练习安全的SQL ,请使用准备好的语句来阻止SQL Injections

答案 1 :(得分:3)

我会为此写一个函数:

// Returns content of first column in first result and 
// returns null if query returns no records
function mysql_get_result($sql) {

   $query = mysql_query($sql); // you may add error handling ...
   if (mysql_num_rows($query) != 0) {
      $row = mysql_fetch_array($query, MYSQL_NUM));         
      return $row[0];
   } else {
      return null;
   }
}

现在你可以使用:

$welcome_text = mysql_get_result("SELECT `content` FROM `text` WHERE `name` = 'welcome'");

注意:您可以抛出异常而不是返回null值。但更好的是很难说,这可能取决于你的编程风格。

答案 2 :(得分:1)

这不完全是一回事。在第一个示例中,您将迭代多个,而不是列。

除非您确定只有一行名称为welcome,否则您仍然需要循环。

当你只需要一些列时,你不应该select *,这是浪费。

换句话说,您应该使用仅略微修改过的:

$welcome_text = mysql_query("SELECT `content` FROM `text` WHERE `name` = 'welcome'");
while ($row = mysql_fetch_array($welcome_text, MYSQL_ASSOC)) {
    echo $row['content'];
}

答案 3 :(得分:-1)

$welcome_text = mysql_fetch_row(mysql_query("SELECT 'content' FROM `text` WHERE `name` = 'welcome'"));
echo $welcome_text[0];