直到最近,我一直在使用mysql *的过程方法。现在我想转向mysqli和面向对象的方法。许多在线资源和书籍都表明,即使在PHP的情况下,OOP也优于程序。在完成一些在线教程之后,我编写了一个连接数据库并选择一个值的小程序。我想知道为什么面向对象的方法更好?加上这是编写OO php网页的正确方法吗?
面向对象的方法
$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";
@ $db = new mysqli($host, $username, $password, $dbname);
if(mysqli_connect_errno())
{
die("Connection could not be established");
}
$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = $db->query($query);
$total_num_rows = $result->num_rows;
echo "The Results Are : <br>";
while($row = $result->fetch_array())
{
echo $row['company_id'];
}
?>
程序方法
<?php
$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";
@ $db = mysqli_connect($host, $username, $password, $dbname);
if(mysqli_connect_errno())
{
die("Connection could not be established");
}
$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = mysqli_query($db, $query);
$total_num_rows = mysqli_num_rows($result);
echo "The Results Are : <br>";
while($row = mysqli_fetch_array($result))
{
echo $row['company_id'];
}
?>
答案 0 :(得分:31)
主要原因是PHP正朝着面向对象编程的方向稳步前进。
使用mysqli_xxx()
函数而不是OOP等价物没有任何问题;就代码而言,它完全相同。
唯一的问题是,就人们对编写良好的PHP代码的看法而言,你将越来越远离这条曲线。
值得注意的是,PDO库被认为是PHP中大多数数据库代码的理想选择,它只是OOP。它没有程序界面。在过去的几个版本中,大多数其他新功能也没有添加到PHP中。如果你想最充分地使用PHP,你无论如何都需要知道OOP。
关于为数据库创建扩展类的能力还有一点 - 就像这样:
class myDB extends mysqli {
.... your own stuff here to extend and improve the base mysqli class
}
当然,您可以使用过程代码实现相同的功能,但它并不像OOP那样整洁。当然,如果你真的想要扩展课程,这只是相关的。
但是,作为第一步,从mysql_xxx()
转移到mysqli_xxx()
是一个很好的开始。将整个方式转移到使用OOP接口会更好,但只需切换到mysqli函数就是一个好的开始。
使用程序界面开始肯定会使旧的mysql_xx()
函数的转换更容易,所以如果在开始时切换到OOP接口是一个太大的飞跃,不要觉得你有一气呵成。首先转换到过程mysqli
函数,然后切换到OOP方法;这种跳跃本身并不会那么大。