我的查询:
mysql::getInstance()->update('requests', array('response' => mysql_real_escape_string($_POST['status'])), array('secret' => $_POST['secret'])); ?>
如果我想用“&”添加字符串符号,“&”之后的所有符号剥离
实施例: string:!“№;%:?()_ +!@#$%^& ()_ +
在数据库中我只看到:!“№;%:?*()_ +!@#$%^
如何解决这个问题?
更新功能,如果有人需要:
function update($table, $updateList, $whereConditions)
{
$updateQuery = '';
foreach ($updateList as $key => $newValue) {
if (!is_numeric($newValue)) {
$newValue = "'" . $newValue . "'";
}
if (strlen($updateQuery) == 0) {
$updateQuery .= '`' . $key . '` = ' . $newValue;
} else {
$updateQuery .= ', `' . $key . '` = ' . $newValue;
}
}
return $this->query('UPDATE ' . $table . ' SET ' . $updateQuery . $this->buildWhereClause($whereConditions));
}
UPD: echo mysql :: getInstance() - > getLastSQL()说:
UPDATE requests SET `response` = '!\"№;%:?*()_ !@#$%^' WHERE `secret` = '52a4ab5f7f3e8491e60b71db7d775ee2'
那么,mysql类中的函数更新有问题吗?
Slaks ,我需要使用str_replace('&','%28',$ query); ?
答案 0 :(得分:3)
您可能在查询字符串中传递了原始&
字符,这会导致&
之后的所有内容都被PHP解析为第二个参数。 (在进入你的变量之前)
您需要将&
转义为%26
。
编辑:在将其发送到服务器之前,您需要将其转义。 (当您发出HTTP请求时)