“&”之后的所有符号剥离

时间:2010-03-28 01:28:01

标签: php sql mysql

我的查询:

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); ?

1 个答案:

答案 0 :(得分:3)

您可能在查询字符串中传递了原始&字符,这会导致&之后的所有内容都被PHP解析为第二个参数。 (在进入你的变量之前)

您需要将&转义为%26

编辑:在将其发送到服务器之前,您需要将其转义。 (当您发出HTTP请求时)