MySQL Queries в WordPress

У меня есть таблица базы данных mySQL, которая называется stock и хранит записи о товарах, выставленных на продажу. При запросе базы данных с помощью 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";
}

$cat в атрибуте функции указан каталожный номер запрашиваемого предмета, а вывод «Есть 2 медведя».

Я поместил это в WordPress, и веб-страница зависла. Затем с помощью поиска в Google я узнал об объекте $ wpdb, используемом 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";
}

Теперь вывод «Есть медведи» (отсутствует $stock значение). Я занимался поиском в Google, чтобы найти свое место, и у меня возникли проблемы с его пониманием. Куда я иду не так?

1

Решение

Пытаться:

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

Кроме того, я бы посоветовал не использовать «SELECT *». Попробуйте запросить только для используемых столбцов. Это лучше для производительности.

Изменить: увидел опечатку. В вашем коде было «$ catno == $ row …». Вы должны использовать только один «=»

1

Другие решения

Эврика !!!,

Часто чего-то не хватает, и это было в запросе MySQL.

Запрос должен быть SELECT * FROM stock WHERE catno = '$cat' изготовление $query = "SELECT * FROM stock WHERE catno = '$cat'";

Я взял на себя проблему «SELECT *», на которую указали @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";
}
-1

По вопросам рекламы [email protected]