Php Wordpress中的mySQL查询

Php Wordpress中的mySQL查询,php,mysql,wordpress,Php,Mysql,Wordpress,我有一个名为stock的mySQL数据库表,它保存着待售商品的库存记录。当使用PHP查询数据库时,我没有问题,但是当我试图通过Wordpress进行查询时,它不起作用 我的PHP如下 // Query the stock level function QueryStock($cat) { $query = "SELECT * FROM stock"; $result = mysql_query($query); if (!$result) die ("Database

我有一个名为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";
}
现在输出为“有空头”(缺少
$stock
值)。我一直在做大量的谷歌搜索,以达到我的目的,我有问题理解它。我哪里出错了?

试试:

function QueryStock($cat) {
    $query = "SELECT * FROM stock WHERE catno = " . $cat;
    global $wpdb;
    $row = $wpdb->get_row($query);
        $catno = $row->catno; //Column name in table
        $itemname = $row->itemname; //Column name in table
        $price = $row->price; //Column name in table
        $stock = $row->stock; //Column name in table

    echo "There are " . $stock . " bears";
}
此外,我建议不要使用“选择*”。尝试仅查询所使用的列。这对性能更好

编辑:看到一个打字错误。代码中有“$catno==$row…”。您应该只使用一个“=”

Eureka

它经常被遗漏,在MySQL查询中

查询应该是
SELECT*FROM stock,其中catno='$cat'
making
$query=“SELECT*FROM stock,其中catno='$cat'”

我接受了@eckes和@rickonline指出的“选择*”问题,进行了单独的查询,并使用了
$wpdb->get_var()

工作编码是

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

顺便说一句:你不应该读“*”列,如果列的顺序改变,这太脆弱了,如果你不需要所有的列,这也是低效的。谢谢你指出错误。不幸的是,这个建议仍然不起作用。获得了相同的输出。表存储在与WordPress表相同的数据库中吗?catnr是字符串吗?那么是的,你需要这样做。另一方面:为什么主键不是整数?另外:@eckes和我的意思不是说你应该在四个不同的查询中得到你的变量。您只应避免使用“选择*”。在您的示例中,它将变成“从库存中选择catno、itemname、price、stock,其中catno='$cat'”。catno由供应商及其目录号组成。我觉得主键最好是catno,因为每个项目都有不同的catno,因此可以被catno引用,而不是id为1。我之所以将每个变量放入4个不同的查询中,是因为我在从Wordpress中生成的数组中提取变量时遇到了问题。这两种方法(使用“SELECT*”和“SELECT catno,itemname,price,stock FROM stock,其中catno='$cat'))都会生成数组,所以这种方法是一种变通方法
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";
}