-1

我的老板最近要求我修复一些 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”条件,对吗?提前致谢。

4

3 回答 3

3

我认为无论如何它都会进入第一个“if”条件,对吗?

不会。的返回值mysql_query将分配给$result。然后将测试该值的真实性。

如果查询有任何错误,那么它将是错误的。

于 2013-06-04T12:30:55.873 回答
2
if ($result = mysql_query($query, $db)) {

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

我宁愿让你注意mysql_query你正在使用的功能。它们已被弃用且不再保留,因此您最好了解其中一个PDOmysqli

于 2013-06-04T12:31:04.297 回答
1
//$query is set here
if ($result = mysql_query($query, $db)) {

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

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

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

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

于 2013-06-04T12:40:21.763 回答