理解简单的PHP代码

时间:2013-06-04 12:28:10

标签: php mysql

我的老板最近要我修改一些PHP代码,但这不是我的常规任务,我在理解原始代码时遇到了一些问题。

所以,这就是我得到的:

//$query is set here
if ($result = mysql_query($query, $db)) {
  $number = mysql_num_rows($result);
  if ($number == 0) {
    echo 'Error!';
  }
  else {
    // do something
  }
} // etc

我不确定第一行代码是做什么的。 为什么他这样写呢?我认为无论如何,它总会进入第一个'if'条件,我是否正确? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

  

我认为无论如何,它总会进入第一个'if'条件,我是否正确?

没有。 mysql_query的返回值将分配给$result。然后将对该值进行真实性测试。

如果查询有任何错误,那么它将为false。

答案 1 :(得分:2)

if ($result = mysql_query($query, $db)) {

这是检查$result是否会返回true所以我们可以继续,$return只是使用mysql_query命令执行对数据库的查询,并作为变量传递查询{{1本身和连接参数$query。如果这将返回false,则表示查询中存在错误

我更愿意将注意力集中在你正在使用的$db函数上。它们已被弃用,不再受到管理,因此您最好了解PDOmysqli

答案 2 :(得分:1)

//$query is set here
if ($result = mysql_query($query, $db)) {

这部分代码声明了数据库查询应该是什么,并尝试运行它。 myssql_query运行数据请求(或尝试将数据放入数据库),但可能没有正确格式化,或者数据库可能有错误,或者它可能位于不同的服务器上且服务器已关闭,或者数据与数据库连接的数据的限制不匹配存在问题。

在任何情况下,它都会尝试从数据库中请求数据,并将该数据放入$result。但是 - 如果将数据放入数据库时​​出现问题,那么它没有任何数据可以放入$resultif语句会将其视为错误,而不是先输入循环。

    $number = mysql_num_rows($result);
    if ($number == 0) {

在某种程度上,这是做类似的事情。以前的程序员基本上声明无论发生什么,$query数据库(或输入数据)的数据库请求应至少返回一行数据,无论如何。如果一切运行正常,服务器正在运行,数据库正在运行,查询没有被拒绝......但是没有返回任何数据行...那么仍然有问题。也许是代码中的逻辑错误,也许在用户输入的字段中有一些格式不正确的数据,谁知道呢?但无论如何,如果没有任何回报,他想表示这里出了点问题。