php - 如何使用 PHP 显示来自 mysql 行的代码块?

标签 php mysql select

我正在尝试显示从 MySQL 数据库记录中提取的一大块代码,但似乎无法使其正常工作。任何帮助将不胜感激。

我有这个图库脚本,它需要一大块代码才能在图库中显示图像:

<ul data-category-name="ALL">

<li data-url="link: htpp://www.here.com" data-target="_blank">
<img src="content/media/thumbnails/framephoto1.jpg" alt="custom alt"/>
    <div data-thumbnail-content1="">
    <p class="centerDark">Photo Name</p>
        <p class="centerNormalDark">Photo Desc</p>
</div>
</li>
<ul>

我想我会尝试将它连接到一个 MySQL 数据库,这样我就可以简单地将每张照片的详细信息添加到数据库中的行中,然后这个脚本将只提取它们并将它们按我想要的顺序放置,而不需要我每次添加新照片时都必须手动添加代码片段。

到目前为止我有这段代码:

<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>ID</th><th>Photo Name</th><th>Value</th></tr>";

class TableRows extends RecursiveIteratorIterator { 
function __construct($it) { 
    parent::__construct($it, self::LEAVES_ONLY); 
}

function current() {
return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
}

function beginChildren() { 
    echo "<tr>"; 
} 

function endChildren() { 
    echo "</tr>" . "\n";
} 
} 


$servername = "localhost";
$username = "dbusername";
$password = "dbpassword";
$dbname = "dbname";

 try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, name, value FROM photos ORDER BY value DESC"); 
$stmt->execute();

// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
    echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?> 

这个显示的问题是它创建了一个包含行和列的表格来显示文本,所以我想将上面的代码片段添加到表格中的一个单元格 (code_snippet),然后简单地调用它来显示每个没有表格或任何其他代码的行,并按值对它们进行排序?

有谁能帮我弄清楚如何去掉这张表并只显示一个代码单元格吗?

或者如果没有,那么如何将相关单元格添加到每个单元格的代码片段中?

提前谢谢你。

更新:

你好。对不起,但这完全让我失望了。这是我目前的连接:

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM photos ORDER BY value DESC"); 
$stmt->execute($all);
} catch (PDOException $e) {
echo 'Error '. $e->getMessage();
}


try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM photos WHERE type=1 ORDER BY value DESC"); 
$stmt->execute($people);
} catch (PDOException $e) {
echo 'Error '. $e->getMessage();
}

现在在 dbconnect 文件中。然后我尝试将下面的这两个片段添加到它们的相关位置到我希望它们都能工作的主文档中。 :>/调用仍然针对它显示的所有记录,但不单独调用数据库。

对于要显示的所有照片:

<?php foreach($stmt->fetchAll($all) as $p): ?>
<li data-url="link: <?= $p['link'] ?>" data-target="_blank">
    <img src="<?= $p['image'] ?>" alt="custom alt"/>
    <div data-thumbnail-content1="">
        <p class="centerDark"><?= $p['name'] ?></p>
        <p class="centerNormalDark"><?= $p['desc'] ?></p>
    </div>
</li>

<?php endforeach; ?>

只显示类别1:

<?php foreach($stmt->fetchAll($people) as $p): ?>
<li data-url="link: <?= $p['link'] ?>" data-target="_blank">
    <img src="<?= $p['image'] ?>" alt="custom alt"/>
    <div data-thumbnail-content1="">
        <p class="centerDark"><?= $p['name'] ?></p>
        <p class="centerNormalDark"><?= $p['desc'] ?></p>
    </div>
</li>
<?php endforeach; ?>

抱歉让我很痛苦,但这真的让我很伤心。谢谢。

最佳答案

对于您真正想要实现的目标而言,您的代码非常困惑且过于复杂。这是您完全重写的代码,以避免使用复杂模式。

<?php
$servername = "localhost";
$username = "dbusername";
$password = "dbpassword";
$dbname = "dbname";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT id, name, value FROM photos ORDER BY value DESC"); 
    $stmt->execute();
} catch (PDOException $e) {
    echo 'Error '. $e->getMessage();
}

?>

<ul data-category-name="ALL">
<?php foreach($stmt->fetchAll() as $p): ?>
    <li data-url="link: htpp://www.here.com" data-target="_blank">
        <img src="content/media/thumbnails/framephoto1.jpg" alt="custom alt"/>
        <div data-thumbnail-content1="">
            <p class="centerDark"><?= $p['name'] ?></p>
            <p class="centerNormalDark"><?= $p['value'] ?></p>
        </div>
    </li>
<?php endforeach; ?>
<ul>

我可能错过了一些你想显示的字段,但你可以用 <?= $d['nameOfTheData'] ?> 添加它们

如果你想从定义的类别中检索图片,只需通过如下方式更改你的请求:

$stmt = $conn->prepare("SELECT id, name, value FROM photos WHERE type = ? ORDER BY value DESC"); 
$stmt->execute([$id']);

$id是您的类别的 id,您可以从 URL 中检索他(使用 $_GET['id'] )或自己定义它。

关于php - 如何使用 PHP 显示来自 mysql 行的代码块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35577241/

相关文章:

php - 使用随机方式制作虚构的 "people",获得大量克隆(PHP、Mysql)

mysql - 如何在mysql中获取毫秒数

mysql - mysql中的行删除

mysql - 在同一张表上更新后在触发器中更新表

reactjs - 如何使用 react-hook-form 触发 `setValue` 的重新渲染?

php - Mysql 无限页面滚动功能不起作用

php - 设置和检索 WordPress 的 session 值

Mysql - 从 unix 时间戳中选择年份

php - 调试 JavaScript 代码

c++ - 在 SQLite 中检索所有项目的最快方法是什么?