Модели базы данных Php - PullRequest
       14

Модели базы данных Php

1 голос
/ 21 апреля 2011
<?php
 class ann {

      public function __construct($context, $orgs_id, $created_at) {
         $this->context = $context;
         $this->orgs_id = $orgs_id;
         $this->created_at = $created_at;
     }

     function create(){
         $createann = mysql_query("INSERT INTO anns(context,
 orgs_id, created_at)
 VALUES('$this->context',
 $this->orgs_id, '$this->created_at'");
         if($createann) echo "Duyuru Başarıyla Eklendi"; else echo "Duyuru
 Eklenemedi";
     }
     function read($id){
         $readann = mysql_query("SELECT * FROM anns WHERE id = $id");
         $context = mysql_result($readann,0, "context");
         $orgs_id = mysql_result($readann,0, "orgs_id");
         $created_at = mysql_result($readann,0,
 "created_at");

         $ann = new ann($context, $orgs_id, $created_at);

         return $ann;
     }
     function update($id, $context){
         $updateann = mysql_query("UPDATE anns SET context =
 '$context' WHERE id = $id");
         if($updateann) echo "Update success"; else echo
 "Update failed";
     }
     function delete($id){
         $deleteann = mysql_query("DELETE FROM anns WHERE id
 = $id");
         if($deleteann) echo "Delete success"; else echo "Delete not success";
     }
     //crud fonksiyonlari burda bitiyor 
}

?>

Что-то не так с нашей логикой, но мы новички в php.Мы пытались создавать рельсы, подобные моделям, но они думают, что что-то с нашей нотацией класса-объекта неверно.Так что код не работает.Мы не можем даже создать какой-либо объект с ним.Спасибо, ребята

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

context, orgs_id и created_at должны быть должны быть сначала объявлены как публичные, частные или защищенные перед их использованием.

В вашем create методе вы не фильтруете пользовательский ввод. Это может привести к тому, что в вашем приложении SQL-инъекция, вам придется всегда фильтровать пользовательский ввод. Используйте либо mysql_real_escape_string , либо подготовленную оценку по PDO .

Вы можете проверить этот учебник .

0 голосов
/ 21 апреля 2011

несколько замечаний:

объявление атрибутов в конструкторе возможно, но это не элегантно. Я бы лучше сделал:

class ann {
  private $context;
  private $orgs_id;

оператор "->" не будет работать внутри строки. Вам нужно будет объединить запрос:

"INSERT INTO anns(context,orgs_id, created_at) VALUES('".$this->context."',".$this->orgs_id".", '".$this->created_at."'"

но будьте осторожны при sql инъекции

Остальное должно быть в порядке! Удачи.

0 голосов
/ 21 апреля 2011

две вещи (которые могут быть применимы только к вашему примеру кода здесь):

  1. В вашем примере вы не закрываете Класс, потому что последний "}" закомментирован.
  2. Вы никогда не открывали соединение с базой данных, поэтому запрос не будет выполнен.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...