<?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_id
和created_at
必须在使用它们之前应该首先声明为public, private或protected。
在您的create
方法中,您不过滤用户输入。这可能会导致您的应用程序SQL注入,您必须始终过滤用户输入。使用mysql_real_escape_string或PDO准备好的语句。
你可以看看这个教程
两件事(可能只适用于这里的代码示例):
- 在你的样品中,你没有关闭你的类,因为最后一个"}"是注释掉了。
- 没有打开数据库连接,所以查询会失败。
几点观察:
在构造函数中声明属性是可能的,但这并不优雅。我宁愿这样做:
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注入
剩下的应该没问题!好运。