我正在使用PDO预处理语句,在处理我当前的项目时,我决定为我需要的每个动作创建几个函数.下面是fetch的示例
function db_fetchAll($sql, $param) { global $db; $stmt = $db->prepare($sql); if (empty($param)) { $stmt->execute(); } else { $stmt->execute($param); } $count = $stmt->rowCount(); if ($count == 0) { $result = ""; } elseif ($count == 1) { $result[] = $stmt->fetch(); } elseif ($count > 1) { $result = $stmt->fetchAll(); } return $result; }
例
$database = db_fetchAll("SELECT * FROM database_table WHERE id=:id", array(':id' => $id));
它只会将查询的行从3行压缩为1,但是每个页面所需的信息量值得缩小.
我将通过该项目返回最后一次通过,我只想对此安全性发表第二意见.如果有任何我应该添加的内容,等等.所有user_input都通过此函数传递
function user_input($input) { $input = trim($input); $output = strip_tags($input); return $output; }
并且所有输出都使用htmlspecialchars.
简而言之,问题是:这样安全吗?还有什么我可以做的,以防止任何其他形式的注射等?
我完全理解准备好的陈述如何运作,我只是彻底,这个网站的第1版是一场噩梦,大量的注射,获得管理员帐户的访问权限等.