Как организовать результат 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=">
[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(); ?>
Заранее благодарю.
Проблема в вашем коде заключается в том, что вы не исполняете запрос к базе данных и не присваиваете результат запроса переменной $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(). Вам необходимо его корректно исправить для удаления данных из базы данных.
Проблема в вашем коде заключается в том, что вы не исполняете запрос к базе данных и не присваиваете результат запроса переменной $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(). Вам необходимо его корректно исправить для удаления данных из базы данных.