У меня есть таблица базы данных 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, чтобы найти свое место, и у меня возникли проблемы с его пониманием. Куда я иду не так?
Пытаться:
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 …». Вы должны использовать только один «=»
Эврика !!!,
Часто чего-то не хватает, и это было в запросе 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";
}