现在我使用这段代码:
$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;
由于
答案 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];