Как организовать результат MySQL запроса на PHP (ООП)? Всем привет. В общем, пишу скрипт на добавление/редактирование/удаление/отображение результатов из БД MySQL. Пишу его на PHP 7 с использованием ООП.
Столкнулся с проблемой - не выводятся результаты из БД, пишет ошибку на неправильные аргументы Foreach и недостаточных аргументов в функции MySQL_fetch_array. Прошу помочь с решением этой проблемы. Добавление работает.
Исходники:
fetch.phpmysqli_qw('
INSERT INTO '.TABLENAME.' SET name=?, text=?',
$element['name'], $element['text']
) or die(mysql_error());
Header("Location: {$_SERVER['SCRIPT_NAME']}?".time());
exit();
}
public static function deleteContent() {
mysqli_qw('
DELETE FROM '.TABLENAME.' WHERE id=?
', $delete) or die(mysql_error());
}
public static function resultContent() {
$connectMysqli = new connectMysqli();
$connectMysqli->mysqli_qw('
SELECT *, UNIX_TIMESTAMP(stamp) AS stamp
FROM '.TABLENAME.'
ORDER BY stamp DESC
') or die(mysql_error());
for (self::$info = array(); self::$row = mysqli_fetch_array(self::$result); self::$info[] = self::$row);
}
}
?>
mysqli_qw.php$v) {
if(!$i) continue;
if (is_int($v)) continue;
$args[$i] = "'".mysqli_real_escape_string(self::$connect, $v)."'";
}
for ($i=$c=count($args)-1; $i
plugin_list.php
plugin_list.html


[delete]

index.phpmysqli_qw('
CREATE TABLE IF NOT EXISTS '.TABLENAME.' (
id INT AUTO_INCREMENT PRIMARY KEY,
stamp TIMESTAMP,
name VARCHAR(60),
text TEXT
)
');
require_once("./fetch.php");
$contentFetch = new contentFetch();
require_once("./plugin_fetch.html");
require_once("./plugin_list.php");
require_once("./plugin_list.html");
if (@$_REQUEST['doAdd']) {
$contentFetch->addContent();
}
if ($delete = @$_REQUEST['delete']) {
$contentFetch->deleteContent();
}
$contentFetch->resultContent();
?>
Заранее благодарю.

21 Авг 2019 в 07:03
189 +2
0
Ответы
1

Проблема в вашем коде заключается в том, что вы не исполняете запрос к базе данных и не присваиваете результат запроса переменной $result в методе resultContent(). Кроме того, использование функции mysql_fetch_array в методе fetch.php также неверное, так как вы используете объект mysqli вместо mysql.

Исправленный код приведен ниже:

fetch.php:

public static function resultContent() {
$connectMysqli = new connectMysqli();
self::$result = $connectMysqli->mysqli_qw('
SELECT *, UNIX_TIMESTAMP(stamp) AS stamp
FROM '.TABLENAME.'
ORDER BY stamp DESC
') or die(mysqli_error());
for (self::$info = array(); self::$row = mysqli_fetch_array(self::$result); self::$info[] = self::$row);
}

plugin_list.php:

<?php
## Plugin list 0.9.444
foreach (contentFetch::$info as contentFetch::$element) {
require_once("./plugin_list.html");
}
?>

Теперь ваш запрос будет исполнен и результат будет присвоен переменной $result. В файле plugin_list.php вы правильно используете свойство $info для отображения данных.

Еще одно замечание: в вашем коде имеется вызов несуществующего метода mysqli_qw() в методе deleteContent(). Вам необходимо его корректно исправить для удаления данных из базы данных.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир