Php Wordpress中的mySQL查询
我有一个名为stock的mySQL数据库表,它保存着待售商品的库存记录。当使用PHP查询数据库时,我没有问题,但是当我试图通过Wordpress进行查询时,它不起作用 我的PHP如下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
// 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";
}