我试着用php做一个循环,把下面的内容吐出来
$sqlons = "SELECT * FROM products WHERE ons = 1";
$ons = $db->query($sqlons);
$sqlpopa = "SELECT * FROM products WHERE popa = 1";
$popa = $db->query($sqlpopa);
$sqlnewr = "SELECT * FROM products WHERE newr = 1";
$newr = $db->query($sqlnewr);
$sqlpopm = "SELECT * FROM products WHERE popm = 1";
$popm = $db->query($sqlpopm);
$sqlpopm2 = "SELECT * FROM products WHERE popm = 2";
$popm2 = $db->query($sqlpopm2);
$sqlfeata = "SELECT * FROM products WHERE feata = 1";
$feata = $db->query($sqlfeata);
$sqlfeata2 = "SELECT * FROM products WHERE feata = 2";
$feata2 = $db->query($sqlfeata2);
$sqlbests = "SELECT * FROM products WHERE bests = 1";
$bests = $db->query($sqlbests);
$sqlbests2 = "SELECT * FROM products WHERE bests = 2";
$bests2 = $db->query($sqlbests2);
$sqlbests3 = "SELECT * FROM products WHERE bests = 3";
$bests3 = $db->query($sqlbests3);
$sqlsea = "SELECT * FROM products WHERE sea = 1";
$sea = $db->query($sqlsea);
我现在已经做过了
$vart = array("sqlons", "sqlpopa", "sqlnewr", "sqlpopm", "sqlfeata", "sqlbests", "sqlsea");
$vart2 = array("ons", "popa", "newr", "popm", "feata", "bests", "sea");
$var = array("ons", "popa", "newr", "popm", "popm", "feata", "feata", "bests", "bests", "bests", "sea");
$var2 = array("1", "1", "1", "1", "2", "1", "2", "1", "2", "3", "1");
foreach($var as $v){
foreach($var2 as $v2){
foreach($vart as $t){
"$".$t = "SELECT * FROM products WHERE $v = $v2";
foreach($vart2 as $t2){
"$".$t2 = $db->query("$".$t);
}
}
}
}
但是我得到了一个未定义的变量,比如“undefined variable:ons in c:\xampp\htdocs\anibuy\pages\index.php on line 90”
请帮帮我!:)
抱歉,如果我添加了html/php代码,这可能会有所帮助
<?php while($product = mysqli_fetch_assoc($ons)) : ?>
<div class="<?= $product['class']; ?>">
<div class="grid-col-1">
<img class="featured-image img-responsive" src="<?= $product['img']; ?>">
</div>
<div class="grid-col-2">
<h2 class="featured-heading"><?= $product['title']; ?></h2>
<div class="grid-col-3">
<div class="span-text"><?= $product['about']; ?><br></div><div class="buy-now"><a href="#">BUY NOW</a></div>
</div>
</div>
</div>
<?php endwhile; ?>
不止一篇论文,还有多篇论文从phpmyadmin数据库中吐出了img标题ect
<?php while($product = mysqli_fetch_assoc($popa)) : ?>
<div class="<?= $product['class']; ?>">
<div class="buy-now buy"><a href="#">BUY NOW</a></div>
<div h4 class="read-more" onclick="rmModal(<?= $product['id'];?>)"><a href="#rmModal-<?= $product['title'];?>.php">READ MORE</a></div>
<div class="featured-image"><img class="featured-image img-pop-anime img-responsive" src="<?= $product['img']; ?>"></div>
</div>
<?php endwhile; ?>
<?php while($product = mysqli_fetch_assoc($newr)) : ?>
<div class="<?= $product['class']; ?>">
<div class="buy-now buy"><a href="#">BUY NOW</a></div>
<div h4 class="read-more" onclick="rmModal(<?= $product['id'];?>)"><a href="#rmModal-<?= $product['title'];?>.php">READ MORE</a></div>
<div class="grid-col-1"><img class="featured-image img-new" src="<?= $product['img']; ?>"></div>
</div>
<?php endwhile; ?>
到目前为止我已经试过了
$vars = array("ons" => 1, "popa" => 1, "newr" => 1);
foreach ($vars as $key => $value) {
"$"."sql".$key = "SELECT * FROM products WHERE $key = $value";
"$".$key = $db->query("$"."sql".$key);
// echo "$"."sql".$key;
// echo $value;
// echo "$".$key;
}
但是它给了我一个错误mysqli\u fetch\u assoc()期望参数1是mysqli\u result,字符串在c:\xampp\htdocs\anibuy\pages\index.php的第142行给出
如果有人对网站的外观感兴趣,这里的url只有html、css和js:https://54x1.github.io/anibuy/pages/indexv2.html
以下是php和mysql的文件,我将sql导出包含在anibuy文件夹中,顺便说一句…/pages/index.php:https://drive.google.com/drive/folders/1muym2sh1bsxf3uacxavoiwtkublcovod?usp=sharing
5条答案
按热度按时间rjee0c151#
根据您的评论,您已经有了正确的基本思想,但是实现实际上可以比您得到的要简单得多。首先,你的“控制”值,即数组
$vart
etc的格式称为数组结构,而使用数组结构可能会容易得多。数组结构的问题是,当你真的想并行地沿着所有四个数组前进时,你有多个嵌套循环试图在它们上面迭代-如果你使用一个数组结构,这个问题基本上消失了。
所以把数据改成这样:
foreach ($vars as $sqldata) {
$select = $sqldata->select;
$compare = $sqldata->compare;
$result = $sqldata->result;
$$result = $db->query("SELECT * FROM products WHERE $select = $compare");
}
8ulbf1ek2#
当$v在查询字符串中时,像这样 Package 它{$v}。
您还应该重新设计阵列:
edited:添加了fetch\u assoc()调用,假设只返回一行。否则,必须使用嵌套的while:
hm2xizp93#
在foreach循环中,$v变量是什么?它似乎没有在任何地方定义。
bvuwiixz4#
在你这边触发的错误,很奇怪,因为当我在我这边运行你的代码时,我没有得到它。
在第一个数组中,添加所有字段名和值,其中ons是字段名,1是where条件的值。其他人也一样。
$key
=数据库中的字段名$value
=字段名的值cnh2zyt35#
您的问题是,您将字符串用作行中的代码,如:
以及:
您需要做的是将代码放入eval()函数中,如下所示:
我认为你使用的所有foreach循环都会有另一个问题,因为你所有的数组都有相同数量的元素,你应该这样做:
试试看,告诉我你是怎么做的