2013-06-04 64 views
-1

我的老板最近要求我修复一些PHP代码,但那不是我平时的任务,而且在理解原代码方面有一些问题。了解简单的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 

我不知道那的第一行代码做一些事情。 他为什么这样写呢?我认为无论如何,它总会进入第一个'如果'的状态,我是否正确? 在此先感谢。

+0

如果出现错误,函数mysql_query将返回FALSE。所以,想象一下'if($ result = 5/0){/ *不会因为除零而通过* /}' – enenen

+2

@enenen这不是一个好的类比,因为这样做会因为不同的原因而失败,而不是简单的返回'false'。 – deceze

+0

@deceze是的,你说得对,当然。 – enenen

回答

3

我觉得无论如何我都会输入第一个'如果'的条件,我正确吗?

mysql_query的返回值将被分配给$result。然后这个价值将被验证为真实。

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

+0

谢谢,我想我现在明白了。 –

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

这是检查是否$result将返回true,所以我们可以继续,$return只是一个使用mysql_query命令,并通过为两个变​​量查询$query本身和连接参数$db数据库查询的执行。如果这将返回false,这将意味着有查询中的错误

我宁愿指出你注意mysql_query函数,你正在使用。他们已被弃用,不再manteined,让你更好的了解或者PDOmysqli

+0

谢谢。是的,我们正计划尽快转向mysqli,这只是对简单指令的一个小修复。 –

+0

@AlanPiralla欢迎你 – Fabio

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

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

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

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

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

+0

也感谢你。 –

+0

很高兴帮助别人理解。我们都去过那里。 –