2015-12-22 3 views
1

попытке обновления в таблице с переключателем случае заказа по идентификатору, как этотобновление PHP в ПДО с ООП и переключатель случае

index.php

<?php $action = (!empty($_REQUEST['action'])) ? $_REQUEST['action'] : "index"; 
$user = new User(); 
switch ($action) { 
    case "editenewsaction": 
     $main_content = "/main_content/Dashboard/edit_new_news"; 
     require(DIR_VIEWS . 'layouts' . DS . "default.php"); 
     if (isset($_POST)) { 
      $user_id = $_GET['news_id']; 
      $user->uid = $user_id; 
      $title = trim($_POST['title']); 
      $content = trim($_POST['content']); 
      $link = $_POST['link']; 
      $user->title = $title; 
      $user->content = $content; 
      $user->link = $link; 
      $user->editnews(); 
      $main_content = "/main_content/Dashboard/mainIndex"; 
      require(DIR_VIEWS . 'layouts' . DS . "default.php"); 
     } else { 
      $main_content = "main_content/errors/edit_error_msg"; 
      require(DIR_VIEWS . 'layouts' . DS . "default.php"); 
     } 
     break; 
} 
?> 

user.php

require(DIR_MODELS . 'database.php'); 
$database = new MySQLDatabase(); 

class User { 

    protected static $table_data = "data"; 
    public $uid; 
    public $title; 
    public $content; 
    public $link; 

    public function editnews() { 
     global $database; 
     $newsid = $this->uid; 
     $utitle = $this->title; 
     $ucontent = $this->content; 
     $ulink = $this->link; 
     $sql = $database->connect->prepare("UPDATE " . self::$table_data . " SET title = :title, text = :text,links=:links WHERE id = :id"); 
     $sql->bindParam(':title', $utitle); 
     $sql->bindParam(':links', $ucontent); 
     $sql->bindParam(':text', $ulink); 
     $sql->bindParam(':id', $newsid); 
     $sql->execute(); 
    } 

    public static function showTable() { 
     global $database; 
     $sql = "SELECT * FROM " . self::$table_data . " "; 
     $stmt = $database->connect->prepare($sql); 
     $stmt->execute(); 
     $result = $stmt->fetchAll(); 
     echo"<table border=1>"; 
     foreach ($result as $row) { 
      echo "<tr>"; 
      echo "<td><a href=index.php?action=newsview&news_id=" . $row['id'] . ">" . $row['title'] . " </a></td>"; 
      echo "<td><a href=index.php?action=newsview&news_id=" . $row['id'] . "><img src='{$row['links']}' /> </a></td>"; 
      echo "<td><a href=index.php?action=editenewsaction&news_id=" . $row['id'] . "><pre>edit</pre></a></td>"; 
      echo "<td><a href=index.php?action=newsview&news_id=" . $row['id'] . "><pre>delete</pre></a></td>"; 
     } 
     echo "</tr>"; 
     echo "</table>"; 
    } 
} 

Вопрос в editnews() метод в том, что он не работает. ShowTable() работал хорошо, и метод создания также хорошо работал только в обновлении, он не работает для меня. Надеюсь, у меня не было слишком много ошибок.

+1

Попытайтесь найти ошибки после выполнения запроса: http://php.net/manual/en/pdo.error-handling.php – user4035

+0

Проверьте результаты вызовов, которые вы делаете в базе данных. Распечатайте содержимое '$ sql' и попробуйте запустить запрос непосредственно в базе данных, чтобы проверить правильность запроса. –

+0

У вас нет проверки на наличие ошибок. Почему вы считаете, что все ваши функции базы данных будут работать отлично? Поймайте ошибки, и вы поймете, что происходит. – miken32

ответ

1

В вашем запросе:

UPDATE ... SET title = :title, text = :text,links=:links WHERE id = :id 

TEXT является mysql reserved keyword, используйте обратно клещ, чтобы избежать его.

UPDATE ... SET title = :title, `text` = :text,links=:links WHERE id = :id 

В сервере mysql используется для определения типа данных для хранения большого количества текста.

+0

спасибо человеку (meda) –