__set magic方法用sql select语句

时间:2013-06-15 18:32:33

标签: php sql pdo

我写了一个像bellow

这样的代码
class helper{
public function __set($table,$type){
global $dbConfig;
$pardConfig=new PDO('mysql:host='.$dbConfig[0].';'.'dbname='.$dbConfig[1],$dbConfig[2],$dbConfig[3]);
$sql=$pardConfig->prepare("SELECT * FROM ".$table." WHERE menu_type=".$type);
$sql->execute();

$sql=$pardConfig->prepare("SELECT * FROM ".$table." WHERE id=".$type);
$sql->execute();

$result=$sql->fetchALL(PDO::FETCH_ASSOC); 
var_dump($result);
}
           }      

$helper = new helper();
$helper->pard_menu = "main"; <<--- OUTPUT array(0) { } 
$helper->pard_menu = 99;
/\_________________________________________ OUTPUT  

array(1) { [0]=> array(4) { ["id"]=> string(2) "99" ["menu_title"]=> string(8) "leftmenu" ["menu_type"]=> string(4) "main" ["menu_description"]=> string(14) "left side menu" } } 

正如您所看到的,有一个名为“main”的menu_type ,但我没有从数据库中获取结果,但是 id 正在获取结果。相同数据库表

1 个答案:

答案 0 :(得分:2)

需要在SQL语句中引用字符串。

但是如果您使用查询参数,则不必担心引号:

$sql=$pardConfig->prepare("SELECT * FROM ".$table." WHERE menu_type=?");
$sql->execute(array($type));

但是,您不能对FROM子句中的表使用这样的参数。您必须小心只使用有效的表名。