gpt4 book ai didi

php - 在 PHP/MySQL 中编写多个查询的最准确方法是什么?为什么?

转载 作者:行者123 更新时间:2023-11-29 12:26:09 25 4
gpt4 key购买 nike

哪种方法是在 PHP/MySQL 中编写多个查询的最准确方法,为什么? (意见应有事实和引用资料支持)

下一个示例工作正常,但我担心这是否是最合适的方式,以及这样做的缺点是什么?

<?php
$con = mysqli_connect("localhost", "my_user", "my_password", "my_bd");

$query_1 = "SELECT product_name FROM products";
$result_1 = mysqli_query($con, $query_1) or trigger_error("Query Failed! SQL: $query - Error: ". mysqli_error($con), E_USER_ERROR);

$query_2 = "SELECT user_name FROM users";
$result_2 = mysqli_query($con, $query_2) or trigger_error("Query Failed! SQL: $query - Error: ". mysqli_error($con), E_USER_ERROR);
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example</title>
</head>
<body>

<?php

while ($row = mysqli_fetch_array($result_1)) {
echo $row['product_name']);
}

while ($row = mysqli_fetch_array($result_2)) {
echo $row['user_name']);
}

/* close connection */
mysqli_close($con);

?>

</body>
</html>

(当然,这只是一个例子,查询通常比这些长得多)。

最佳答案

我推荐@WAJ的答案,但根据你的项目,它可能有点过分了。

一种简单的组织方法是从查询中创建一个对象。

这只是一个示例,您可以大概了解一下。

class Person {

protected $username;
protected $ID;

public function setUsername($name)
{
$this->username = $name;
}

public function getUsername()
{
return $this->username;
}

public function getUserID()...ETC

}

class PersonMapper
{
public function getUser(Person $User)
{

//$User->getUsername() has the user's name, so we can fetch the ID here.

$query_2 = "SELECT user_name FROM users";
//...only get data here, no filtering, no validation. nothing more.
//If you need to validate the data do it somewhere else or your code will be messy.


//Fetch result into $row['user_id'] then do:
$User->setUserID($row['user_id']);
//You can fetch other information here and give all the information $User needs. I would fetch ALL of the information so you can have the information needed all the time.
$User->setDateOfBirth(... ETC
}
}

调用使用:

$User = new Person();
$User->setUsername($_POST['username']); //Don't do this unless you want to get hacked. Filter your user data first! It's just an example.
$UserMapper = new PersonMapper();
$UserMapper->getUser($User);
echo $User->getUserID(); //Outputs the DB information.

看到了吗?无需查询,易于阅读/重用。当您遇到查询问题时,您将确切地知道该去哪里查找。

对其他对象执行相同的操作,不要将所有内容都放在一个类下。将它们视为现实世界的对象。

对与主对象相关的每个查询使用不同的方法。

类产品

ProductMapper 类

...但是,是的,你明白了。

关于php - 在 PHP/MySQL 中编写多个查询的最准确方法是什么?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28284208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com