AVXNWNK
@AVXNWNK
Middle DevOps-engineer

Как организовать результат MySQL запроса на PHP (ООП)?

Всем привет. В общем, пишу скрипт на добавление/редактирование/удаление/отображение результатов из БД MySQL. Пишу его на PHP 7 с использованием ООП.
Столкнулся с проблемой - не выводятся результаты из БД, пишет ошибку на неправильные аргументы Foreach и недостаточных аргументов в функции MySQL_fetch_array. Прошу помочь с решением этой проблемы. Добавление работает.
Исходники:

fetch.php
<?php

## Fetcher engine 0.9.444

class contentFetch {
  public static $element, $info;
  private static $row, $result;
  public static function addContent() {
    $connectMysqli = new connectMysqli();
    self::$element = $_REQUEST['element'];
    if (ini_get("magic_quotes_gpc"))
      $element = array_map('stripslashes', $element);
    $connectMysqli->mysqli_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
<?php
class connectMysqli {
  private static $connect;
  public function __construct() {
    self::$connect = mysqli_connect("localhost", "name", "passwd", "db_name");
  }
  /*public function __destruct() {
    mysqli_close(self::$connect);
  }*/
  public static function mysqli_qw() {
    $args = func_get_args();
    $conn = NULL;
    if(is_resource($args[0])) $conn = array_shift($args);
    $query = call_user_func_array(array("self", "mysqli_make_qw"), $args);
    return $conn!==null? mysqli_query($query, $conn) : mysqli_query(self::$connect, $query);
  }
  public static function mysqli_make_qw() {
    $args = func_get_args();
    $tmpl =& $args[0];
    $tmpl = str_replace("%", "%%", $tmpl);
    $tmpl = str_replace("?", "%s", $tmpl);
    foreach ($args as $i=>$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<$c+20; $i++)
      $args[$i+1] = "UNKNOWN_PLACEHOLDER_$i";
    return call_user_func_array("sprintf", $args);
  }
}
?>

plugin_list.php
<?php

## Plugin list 0.9.444

foreach (contentFetch::$info as contentFetch::$element) {
  require_once("./plugin_list.html");
}

?>

plugin_list.html
<!-- Plugin list 0.9.444 -->

<b>
  <?=date("d.m.Y", contentFetch::$element['stamp'])?>
  <?=htmlspecialchars(contentFetch::$element['name'])?>
</b>
<a href="<?=$_SERVER['SCRIPT_NAME']?>?delete=<?=contentFetch::$element['id']?>">
  [delete]</a>
<blockquote>
  <?=nl2br(htmlspecialchars(contentFetch::$element['text']))?>
</blockquote>

index.php
<?php

## indexpage

define("TABLENAME", "subd");
require_once("./mysqli_qw.php");
$connectMysqli = new connectMysqli();
$connectMysqli->mysqli_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();
?>

Заранее благодарю.
  • Вопрос задан
  • 436 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы