【问题标题】:How to display a chunk of code from mysql rows using PHP?如何使用 PHP 从 mysql 行中显示一段代码?
【发布时间】:2016-06-05 06:32:17
【问题描述】:

我正在努力显示从 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 数据库,这样我就可以简单地将每张照片的详细信息添加到数据库中的行中,然后这个脚本只会拉取它们并按照我想要的顺序放置它们每次添加新照片时,我都必须手动添加代码 sn-p。

到目前为止,我有这个代码:

<?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>";
?> 

这个显示的问题是它正在创建一个带有行和列的表格来显示文本,所以我想将上面的 sn-p 添加到表格中的一个单元格(code_sn-p),然后简单地调用它在没有表格或任何其他代码的情况下为每一行显示并按值排序?

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

如果没有,那么如何将相关单元格添加到每个单元格的代码 sn-p 中?

提前谢谢你。

更新:

喂。对不起,但这完全让我失望了。这是我目前所拥有的连接:

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 文件中。然后我尝试将下面这两个 sn-ps 添加到它们的相关位置到我希望它们都工作的主文档中。 :>/ 仍然会调用它显示的所有记录,但不会单独调用数据库。

要显示的所有照片:

<?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 mysql select


    【解决方案1】:

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

    <?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>
    

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

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

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

    $id是你的分类id,你可以从URL中检索他($_GET['id'])或者自己定义。

    【讨论】:

    • 非常感谢 Sakuto。这样就完成了。几年前我确实曾经了解一点 PHP,但现在一切都变了,所以我想再次了解它。
    • 没问题,很高兴为您提供帮助 :) 如果您需要对我的代码中的某些内容进行一些解释,请告诉我。
    • 谢谢。我想做的一件事是对数据库进行多次调用以提取以下记录:当前获取所有然后我还想通过设置单独的画廊来调用每个类别的记录。 ://
    • 我的每张照片都有一个名为 type 的列,每个类别都有一个 INT。即:类别 1 = 1 类别 2 = 2 等等。因此,如果我只想提取类别 2 并在同一页面中显示它们,我将如何分离数据库选择代码。或者我可以只使用同一个然后以某种方式显示每个类别吗?
    • 刚刚添加了一个更新,其中有一个问题让我对你的新答案感到困惑。 :>/
    猜你喜欢
    • 1970-01-01
    • 2017-03-05
    • 2012-02-28
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多