PHP получает данные из базы данных mysql для строковой переменной Query - PullRequest
0 голосов
/ 27 марта 2011

Вот что я хотел бы сделать; Я передаю закодированные данные в качестве переменной запроса на свою веб-страницу, затем на своей странице php я декодирую данные и проверяю их в своей базе данных. Код, который я использую, показан ниже:

<?php
// Get the ID from URL.
$id = ( isset($_GET["id"]) && !empty($_GET["id"]) ? $_GET["id"] : "");

// If "id" is not empty, proceed.
if(!empty($id)) {
    $id = base64_decode($id);
    global $wpdb;
    $res = $wpdb->query("SELECT * FROM S_redirect WHERE source = ".$id);
    $tot = count($res);

    echo $tot . " records found.";

    for( $i=0; $i<count($res); $i++) {
        echo $res[$i]->id;
    }
    exit;
}
else {
    echo "No ID";
    exit;
}
?>

У меня есть одна запись в моей базе данных. Приведенный выше код правильно говорит "1 записей найдено". Я не уверен, как получить значение поля в этой строке. У меня есть 3 столбца, это id, field1 и field2. Код "echo $res[$i]->id" ничего не возвращает.

Пожалуйста, помогите

Кстати, я пытаюсь это сделать в своем блоге Wordpress.

Спасибо всем за ваши предложения. Я попробовал ваши предложения, и вот мои результаты:

$res = $wpdb->query("SELECT * FROM S_redirect WHERE source = ".$id);
$tot = count($res);
echo $tot . " records found."."</br>";

там написано 1 найденных записей.

$res = $wpdb->get_row("SELECT * FROM S_redirect WHERE source = ".$id);
$tot = count($res);
echo $tot . " records found."."</br>";

говорится, что найдено 0 записей.

$res = $wpdb->get_results("SELECT * FROM S_redirect WHERE source = ".$id);
$tot = count($res);
echo $tot . " records found."."</br>";  

там написано 0 записей найдено.

while ($row = mysql_fetch_array($res)) {
echo $row[0];  
}

Если я использую mysql_fetch_array,

Предупреждение: mysql_fetch_array (): предоставленный аргумент не является допустимым ресурсом результатов MySQL в /home/myfolder/mytheme/index.php в строке 38.

строка 38 - while ($ row = mysql_fetch_array ($ res)) {.

Что я пытаюсь сделать:

У меня есть WordPress блог. Весь приведенный выше код входит в мой index.php. Я передам идентификатор продукта в мой index.php через переменную строки запроса. Я создал новую таблицу с именем S_redirect в моей базе данных WordPress. Я получу значение переменной строки запроса id и проверю ее в своей таблице базы данных. Если запись существует, извлеките одно из значений столбца (URL-адрес продукта) из этой строки таблицы и перенаправьте на этот URL-адрес продукта. Если запись не существует, перенаправьте на домашнюю страницу. надеюсь, это поможет всем понять, что я делаю.

Ответы [ 2 ]

1 голос
/ 27 марта 2011

Судя по $wpdb, похоже, что это WordPress.Надеюсь, это поможет: http://codex.wordpress.org/Function_Reference/wpdb_Class


Обновление

Не используйте count() для получения количества строк;используйте $wpdb->num_rows (нет (), потому что это свойство, а не функция).Функция count() всегда возвращает 1 для любого ненулевого значения, которое не распознается как «счетное» значение (т. Е. Для массивов и определенных объектов), поэтому, скорее всего, ваш код всегда будет давать 1.

$tot = $wpdb->num_rows;

=====
Если вы выполняете запрос с get_results() вместо query(), вы можете просмотреть результаты, как показано ниже:

foreach ($res as $row) {
    echo $row->id;
}

В конечном счете, я думаю, что ваш код в конечном итоге будет выглядеть следующим образом:

$res = $wpdb->get_results("SELECT * FROM S_redirect WHERE source = ".$id);
$tot = $wpdb->num_rows;

echo $tot . " records found.";

foreach ($res as $row) {
    echo $row->id;
}

Отказ от ответственности: это не проверено, поскольку я никогда не использовал WordPress.Это только то, как я понимаю это из документации, указанной выше.Надеюсь, это, по крайней мере, приведет вас на правильный путь.

0 голосов
/ 27 марта 2011

Использование:

$tot = count(mysql_fetch_array($res));

или

$tot = mysql_num_rows($res);

Лучшее -

while ($ row = mysql_fetch_assoc ($ res)) { echo $ row ['column_name']; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...