MySQL queries in Wordpress

时间:2015-02-16 作者:Chris Rogers

我有一个名为stock的MySQL数据库表,它保存着待售商品的库存记录。当使用PHP查询数据库时,我没有问题,但当我尝试通过WordPress进行查询时,它不起作用。

我的PHP如下

// Query the stock level
function QueryStock($cat) {
    $query = "SELECT * FROM stock";
    $result = mysql_query($query);

    if (!$result) die ("Database access failed: " . mysql_error());
    $rows = mysql_num_rows($result);
    for ($j = 0 ; $j < $rows ; ++$j)
    {
        $row = mysql_fetch_row($result);
        if ($row[0] == $cat) {
            $catno=$row[0];
            $supplier=$row[1];
            $itemname=$row[2];
            $category=$row[3];
            $price=$row[4];
            $stock=$row[5];
        }
    }
    mysql_close($db_server);

    echo "There are " . $stock . " bears, the price of each bear is &pound;" . $price;
}
$cat 函数属性中是我正在查询的项目的目录号字符串,输出为“有2个熊,每个熊的价格为4.99英镑”。

我把这个放在WordPress里,网页就挂了。通过谷歌搜索,我发现WordPress在designmodo.com. 因此,通过一些代码压缩,我将其更改为。。。

function QueryStock($cat) {
    $query = "SELECT * FROM stock WHERE catno = " . $cat;
    global $wpdb;
    $row = $wpdb->get_row($query, ARRAY_N);
        $catno == $row[0];
        $itemname = $row[2];
        $price = $row[4];
        $stock = $row[5];

    echo "There are " . $stock . " bears, the price of each bear is &pound;" . $price;
}
现在的产出是“有熊,每只熊的价格是%”(缺少$stock$price 值)。

作为解决方法,我可以使用以下方法

function QueryStock($cat) {
    $query1 = "SELECT catno FROM stock WHERE catno = \'$cat\'";
    $query2 = "SELECT itemname FROM stock WHERE catno = \'$cat\'";
    $query3 = "SELECT price FROM stock WHERE catno = \'$cat\'";
    $query4 = "SELECT stock FROM stock WHERE catno = \'$cat\'";

    global $wpdb;

    $catno = $wpdb->get_var($query1);
    $itemname = $wpdb->get_var($query2);
    $price = $wpdb->get_var($query3);
    $stock = $wpdb->get_var($query4);

    echo "There are " . $stock . " bears, the price of each bear is &pound;" . $price;
}
这是可行的,但它并不能解决我处理MySQL查询的数组输出的问题。

我一直在做大量的谷歌搜索来找到我现在的位置,但我在理解它时遇到了问题。我哪里做错了?

1 个回复
最合适的回答,由SO网友:Chris Rogers 整理而成

多亏了@Milo的帮助,我才发现了这些错误

@Milo对catno的查询指出了我第一次查询catno时的错误,我还注意到$catno == $row[0]; 应该是什么时候$catno = $row[0];

最终编码为

function QueryStock($cat) {
    $query = "SELECT * FROM stock WHERE catno = \'$cat\'";
    global $wpdb;
    $row = $wpdb->get_row($query, ARRAY_N);
        $catno = $row[0];
        $itemname = $row[2];
        $price = $row[4];
        $stock = $row[5];

    echo "There are " . $stock . " bears, the price of each bear is &pound;" . $price;
}

结束

相关推荐

允许admin-ajax.php接收“application/json”而不是“x-www-form-urlencode”

我在用AngularJS的$http 函数将我的有效负载发送到WordPressadmin-ajax.php 子系统,但后者似乎只接受x-www-form-urlencoded 数据,而不是application/json 由Angular提供。我知道there are ways 使$http函数更像$.post(), 但这是荒谬的——既然已经是JSON,为什么还要将一堆JSON数据转换成一种形式呢?为此目的—is there any way of instructing admin-ajax to co