我用了以下功能:绑定参数strip out下划线?
function update_value($table, $field, $value, $type, $where1, $value1, $where2=NULL, $value2=NULL, $where3=NULL, $value3=NULL) {
$rows = array();
global $conn;
connect();
$value1 = "'" . $value1 . "'";
$sql = "UPDATE $table SET $field =? WHERE $where1 = $value1";
$bind1 = "'" . "$type" . "'";
if ($where2 != NULL) {
$value2 = "'" . $value2 . "'";
$sql .= " AND $where2 = $value2";
}
if ($where3 != NULL) {
$value3 = "'" . $value3 . "'";
$sql .= " AND $where3 = $value3";
}
$stmt = $conn->prepare($sql);
$stmt->bind_param($type, $value);
$stmt->execute();
$stmt->close();
$conn->close();
}
...更新表的用户名字段(确保它是通过上述功能更新前的字符串)。我尝试使用字符串后跟下划线进行更新,但是当它出现在表格中时,下划线消失了。
我是新来的绑定参数,是否有某些东西被剥去?如果是这样,我想知道到底是什么让我可以使用preg_match捕捉它们,然后更新并提醒用户。
*?“的确结合PARAM带了下划线” * - * “我试着更新一个字符串后跟一个下划线,但是当它出现在表格中时,下划线已经消失了。”* - 你问题的标题应该更像*“为什么绑定参数去掉下划线?”* –
绑定doesn'不要改变你提交的数据。如果你以前强调过,他们会在那之后。但是,由于您将“外部”数据直接放入查询字符串中,因此您仍然很容易受到[sql注入攻击](http://bobby-tables.com)的攻击。 –
该功能仅适用于我。在将数据放入函数之前,我会对数据进行清理。所以它不应该删除下划线?任何想法为什么会这样? – thinkofacard