Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用mysql执行许多查询可以吗?还是应该进行优化?_Php_Mysql_Oop - Fatal编程技术网

Php 使用mysql执行许多查询可以吗?还是应该进行优化?

Php 使用mysql执行许多查询可以吗?还是应该进行优化?,php,mysql,oop,Php,Mysql,Oop,我对编程比较陌生,一直在一个项目组工作,以创建我们第一个合适的网站。我们有产品和一个页面,根据选择的类别,我们希望在其中显示多个产品 $productlist = new ProductList($DB_con, htmlspecialchars($_POST['categoryID'])); $productids = $productlist->getids(); $product = new Product($DB_con); foreach ($productids as $id

我对编程比较陌生,一直在一个项目组工作,以创建我们第一个合适的网站。我们有产品和一个页面,根据选择的类别,我们希望在其中显示多个产品

$productlist = new ProductList($DB_con, htmlspecialchars($_POST['categoryID'])); 
$productids = $productlist->getids();
$product = new Product($DB_con);
foreach ($productids as $id) {
    $product->read($id);
    echo $product->productname
}

这只是我所说的一个基本示例,但本质上,
foreach
循环将在
read($id)
上迭代多次,这意味着它将对每个产品执行一个查询。现在我的问题是,这是否真的是一种可以接受的方式,或者我是否应该执行一个查询,并以某种方式从该查询中获取数据(或任何其他替代方法)。

这可能是SQL
的一项工作,其中
。如果您有一组ID,只需运行:

从id位于(1、2、3、4、5、n…)的产品中选择*

您可以通过以下方式生成数字:

$ids = implode(", ", $productids);

$sql = "SELECT * FROM products WHERE id IN ({$ids})";

这可能是SQL
的作业,其中位于
。如果您有一组ID,只需运行:

从id位于(1、2、3、4、5、n…)的产品中选择*

您可以通过以下方式生成数字:

$ids = implode(", ", $productids);

$sql = "SELECT * FROM products WHERE id IN ({$ids})";

通常,执行单个查询(可能使用联接)的效率要高得多。。。每次往返数据库都是一个很大的开销,最好运行一个查询并从某个类别中提取所有产品。如果您的表结构设置正确,这并不难实现。执行单个查询(可能使用联接)通常效率更高。。。每次往返数据库都是一个很大的开销,最好运行一个查询并从某个类别中提取所有产品。如果您的表结构设置正确,这并不难实现。这非常有用,我会记住的!不过,我最终只是将位重写为一个查询。这非常有用,我会记住的!不过,我最终只是将位重写为一个查询。