对于您必须指定一个WHERE子句一份声明中什么值将例如:
SELECT * FROM table WHERE ID=?
如果你想让它更动态,你可以在一个函数中指定查询,然后调用查询函数。例如,你有这样的:
function query($query, $param, $where)
{
$query = $mysql->prepare($query);
$query->bind_param($param, $where);
$query->execute();
...
}
,并在你的其他功能你说:
$results=query("SELECT * FROM table WHERE Id=?","s","1");
你甚至可以更复杂的通过使查询类,它可以包含where子句的数组做这样的:
class query
{
public $query;
public $param;
public $where;
}
$query=new query();
$query->query="SELECT * FROM Table WHERE group=? AND name like ?";
$query->param="ss";
$query->where = array();
$query->where[]="administrators";
$query->where[]="sam";
,改变你的查询功能看起来像:
function SQLCall(query $query)
{
$db = $mysql->prepare($query->query);
call_user_func_array(array(&$db, 'bind_param'), $where)
$db->execute();
...
}
如果这个子句是完全任意的,为什么不自己清理输入并执行'$ mysql-> prepare(“SELECT * FROM table WHERE $ where”);'? –
有太多的东西可能会导致您自己的SQL输入消毒过程出错。使用像prepare这样的内置函数是安全和简单的 – Snowburnt