这里是我的代码:访问对象,在PHP中的静态变量
class Photograph extends DatabaseObject {
protected static $table_name="photographs";
protected static $db_fields=array('id', 'filename', 'type', 'size', 'caption','album_id');
public $id;
public $filename;
public $type;
public $size;
public $caption;
//public $album_id;
protected static $album_id;
private $temp_path;
protected $upload_dir="images";
现在,当我使用下面这个函数在另一页上,如“$照片=照片:: find_by_album();”
我得到一个sql错误,说:'数据库查询失败:你的SQL语法有错误;检查对应于你的MySQL服务器版本在线路附近使用“=” 1'
public static function find_by_album($album_id='')
{
return self::find_by_sql("SELECT * FROM ".self::$table_name."WHERE album_id = ".self::$album_id."");
}
基本上正确的语法手册,我会发生的是让所有的值从$保存在数据库中table_name其中用户输入的$ album_id等同于数据库中找到的album_id。您可能会发现这个问题很简单,但不幸的是,我无法找到解决方案。请有任何想法吗?提前致谢。 :)
编辑:
继埃利亚斯Ootegem先生,
我已经修改了代码,它现在看起来像
public static function find_by_album($album_id='')
{ return self::find_by_sql("SELECT * FROM ".self::$table_name." WHERE album_id = ".$album_id."");
}
不过,我还是得到同样的错误。我尝试使用此代码:
public static function find_by_album()
{ return self::find_by_sql("SELECT * FROM ".self::$table_name." WHERE album_id = ".$album_id."");
}
现在另一个错误出现它说:未定义的变量:album_id
任何其他的想法?
在表名后面放一个空格SELECT * FROM photographsWHERE album_id = – Waygood 2012-08-06 10:19:02
输出SQL查询的样子,不仅仅是错误消息。然后,你可以真正了解什么是错的(和其他人)。你也在滥用静态的极端,所以我对你的感受有点有限。你应该首先了解继承,而不是静态函数堆栈(或者如果你非常喜欢静态的话,可以使用['Super :: $ tatic'](http://i.imgur.com/RJEsz.png)来提供数据库) 。 – hakre 2012-08-06 10:21:41