Php数据库模型


Php database models

<?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的新手。我们尝试创建像模型一样的rails,但它认为我们的类-对象表示法有问题。所以代码不起作用。我们甚至不能用它创建任何对象。谢谢大家

context, orgs_idcreated_at 必须在使用它们之前应该首先声明为public, private或protected。

在您的create方法中,您不过滤用户输入。这可能会导致您的应用程序SQL注入,您必须始终过滤用户输入。使用mysql_real_escape_string或PDO准备好的语句。

你可以看看这个教程

两件事(可能只适用于这里的代码示例):

    在你的样品中,你没有关闭你的类,因为最后一个"}"是注释掉了。
  1. 没有打开数据库连接,所以查询会失败。

几点观察:

在构造函数中声明属性是可能的,但这并不优雅。我宁愿这样做:

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注入

剩下的应该没问题!好运。