我的网站范围相当广泛,最近我刚切换到PHP5(称我为后期开发者)。
我之前所有的MySQL查询都是这样构建的:
"SELECT * FROM tablename WHERE field1 = 'value' && field2 = 'value2'";
这使得它非常容易,简单和友好。
由于明显的安全性原因,我现在正尝试切换到mysqli,并且SELECT * FROM在bind_param需要特定参数时很难弄清楚如何实现相同的查询。
SELECT * FROM
bind_param
这句话已成为过去吗?
如果是的话,如何处理涉及大量列的查询?我真的需要每次都把它们全部打出来吗?
变成
"SELECT * FROM tablename WHERE field1 = ? && field2 = ?";
传递给$mysqli::prepare:
$mysqli::prepare
$stmt = $mysqli->prepare( "SELECT * FROM tablename WHERE field1 = ? && field2 = ?"); $stmt->bind_param( "ss", $value, $value2); // "ss' is a format string, each "s" means string $stmt->execute(); $stmt->bind_result($col1, $col2); // then fetch and close the statement
OP评论:
因此,如果我有5个参数,则可能会有“ sssis”之类的东西(取决于输入的类型?)
正确,?在准备好的语句中,每个参数都有一个类型说明符,它们都在位置上(第一个说明符适用于第一个?,由第一个实际参数替换(这是的第二个参数bind_param))。
?
mysqli将负责转义和引用(我认为)。