1

所以这就是我想要完成的事情:过去我曾多次使用 SQL,但它总是使用冷融合,从来没有使用 PHP。我已经查看了进行 sql 查询的语法并提出了这么多(我相信使用 prepare 有助于防止 sql 注入)。我的总体目标是设置一个页面,以便从具有与类别表对应的 cat_id 的珠宝表中提取所有行。我只是不确定我是否正确启动了这个。珠宝表有 4 个字段(id、cat id、name 和 image)

<?php

 $categorys = $wpdb->get_results ( $wpdb->prepare("SELECT id FROM $wpdb->categories
        WHERE name = '(the_slug())'") );

    $jewelrys = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->jewelry
        WHERE post_status = 'publish'
        AND cat_id = $categorys->id ") );

    foreach ($jewelrys as $jewelry) {
    echo '<div id="jBox"><a href="/wp-includes/images/jewelryImages/' . $jewelry->image . '"><img src="/wp-includes/images/jewelryImages/' . $jewelry->image . '" /><br />' . $jewelry->name . '</div>';
    }
?>

此外,我希望添加分页,每页仅显示 9 个。非常感谢任何提示或指导 =)

更新:我刚刚用一个简单的 echo 语句测试了这个类别,看看它是否拉了任何东西,但它没有,这是编码错误吗?

4

1 回答 1

3

为避免 SQL 注入,请使用准备好的语句 - 这样您就可以将变量项作为参数传递给 MySQL(它知道不会对 SQL 进行评估),而不是将它们作为 SQL 命令的一部分。

请参阅如何防止 PHP 中的 SQL 注入?

要实现分页,您需要查看 MySQL 的LIMIT子句 - 例如

SELECT ... LIMIT  0,9;  -- get 9 records starting from record 0
SELECT ... LIMIT  9,9;  -- get 9 records starting from record 9
SELECT ... LIMIT 18,9;  -- get 9 records starting from record 18
-- etc
于 2012-04-27T16:41:11.817 回答