Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 创建数组而不是重复函数 函数givemebann($pos){ 全球$db; $st=$db->prepare(“从主页='”、$pos.“限制1”的横幅中选择*); $st->execute(); 返回$st->fetch(); } “alt='img'>_Php_Mysql - Fatal编程技术网

Php 创建数组而不是重复函数 函数givemebann($pos){ 全球$db; $st=$db->prepare(“从主页='”、$pos.“限制1”的横幅中选择*); $st->execute(); 返回$st->fetch(); } “alt='img'>

Php 创建数组而不是重复函数 函数givemebann($pos){ 全球$db; $st=$db->prepare(“从主页='”、$pos.“限制1”的横幅中选择*); $st->execute(); 返回$st->fetch(); } “alt='img'>,php,mysql,Php,Mysql,这一切都有效,但我在一个页面上有50个这样的位置。 givemebann('left-a') givemebann('right-b') ... 等 因此,我需要减少php和mysql服务器之间的通信,我认为解决方案是创建一个值数组,然后从该数组中获取html中的值 我需要任何帮助来创建这样的数组吗?如果您只选择SQL查询中真正需要的列,而不是所有现有列,那将是明智的: function givemebann($pos) { global $db; $st = $db->p

这一切都有效,但我在一个页面上有50个这样的位置。
givemebann('left-a')
givemebann('right-b')
... 等

因此,我需要减少php和mysql服务器之间的通信,我认为解决方案是创建一个值数组,然后从该数组中获取html中的值


我需要任何帮助来创建这样的数组吗?

如果您只选择SQL查询中真正需要的列,而不是所有现有列,那将是明智的:

function givemebann($pos) {
    global $db;
    $st = $db->prepare("select * from banners where home = '" . $pos . "' limit 1");
    $st->execute();
    return $st->fetch();
}

<div class='bigwrap' id='bigwrap'>
<?php
$row = givemebann('big-top');
$x = $row['src'];
?>
<img class='bigbann' src='../banners/<?php echo $x; ?>' alt='img'>
</div>
//声明此页面上需要的所有横幅
$banner_list=数组('left-a'、'right-b'、'big-top'、'small-bottom');
//获取所有必需的横幅
$st=$db->prepare(“从主页所在的横幅(“.infrade”(“,”,$banner_list)”)中选择主页,src),按主页分组);
$st->execute();
$result=$st->fetchAll();
foreach($result as&$row)$banner[$row['home']]=$row;
“alt='img'>

All
$pos
值需要在循环中迭代并放入单个数组中。无论哪种方式,每次调用都会从数据库中获取不同的结果。为什么不在一个查询中一次获取所有位置,然后迭代数组呢。
// declare all the banners that you will need on this page
$banner_list = Array('"left-a"', '"right-b"', '"big-top"', '"small-bottom"');

// get all the required banners
$st = $db->prepare("select home, src from banners where home IN (" . implode(",",$banner_list) . ") GROUP BY home");
$st->execute();
$result = $st->fetchAll();
foreach($result as &$row) $banners[$row['home']] = $row;

<div class='bigwrap' id='bigwrap'>
<?php
$row = $banners['big-top'];
$x = $row['src'];
?>
<img class='bigbann' src='../banners/<?php echo $x; ?>' alt='img'>
</div>