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

在PHP、MySQL中使用select,当我确切地知道我需要哪个列时,php,mysql,select,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("SEL

现在我使用以下代码:

$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;

谢谢

mysql\u查询
进行查询,返回结果集

$welcome_text = mysql_query("SELECT * FROM `text` WHERE `name` = 'welcome'");
$row = mysql_fetch_array($welcome_text, MYSQL_ASSOC);
echo $row['content'];
mysql\u fetch\u数组
从结果集中获取第一行

$welcome_text = mysql_query("SELECT * FROM `text` WHERE `name` = 'welcome'");
$row = mysql_fetch_array($welcome_text, MYSQL_ASSOC);
echo $row['content'];
当然,如果需要,可以缩短代码,但这可能会使代码更难调试和维护

详细、清晰的代码>一行“炫耀”代码

包括“以防万一”检查:

$welcome_text = mysql_query("SELECT * FROM `text` WHERE `name` = 'welcome'");
if($row = mysql_fetch_array($welcome_text, MYSQL_ASSOC)){
    echo $row['content'];
}
好的做法是在打印之前加倍确保您拥有所需的内容

最后,请确保在用户提交的数据进入数据库之前对其进行清理。如果你不打算使用,至少使用


练习安全SQL,戴上事先准备好的声明来防止。

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

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

你是对的,当你只需要一些列时,你不应该
选择*
,这是浪费

换言之,您应该只使用稍加修改的:

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

我将为此编写一个函数:

// 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
值。但是什么更好很难说,这可能取决于你的编程风格。

儿子,永远不要试图把你所有的代码塞进一行。这太傻了,那不是OP想要的吗?这并不意味着这是个好主意。@EboMike没有OP的代码作为借口:)他们问是因为他们不知道正确的方法。所以,不要跟随他们的想法,而是提出更好的建议。你们的想法是正确的。应缩短所有重复动作。虽然你不能用这种方式使用本机函数,但你可以创建自己的函数。实际上,没有什么需要清理的。可能是数字吧。如果处理得当,字符串已经正常了。而这样的治疗对我们来说更为重要mention@TheColonel:请原谅我的无知,您所说的“正确处理”是什么意思?只有当查询返回false时,我才会抛出异常。虽然这样的业务逻辑问题我会用相同的业务逻辑方式处理,而不是错误处理方式。但这要看情况而定。