由于MSSQL查询中的错误原因,我正试图将"替换为"。我知道这会更安全,我只是在学习,他们会变得更安全。
所以我用了str_replace。并做到了这一点。
$dbTABLE = "Table_Name";
$query_sql = sprintf("UPDATE %s SET PageHTML = ('%s') WHERE PageID = '%d'",
$dbTABLE,
str_replace("'","''",$PageHTML),
$PageID);
工作得很好,但为了一致性和易用性,我想写一个可以包含在所有页面中的函数。功能如下:
function SQLencode($svalue) {
str_replace("'","''",$svalue);
}
并像这样实现:
SQLencode($PageHTML),
然而,这只是从查询中删除了所有数据,我不明白为什么。之后我所有的数据都是空白的。有人能告诉我哪里出了问题吗?
您需要return
函数SQLencode(..)
的值。
function SQLencode($svalue) {
return str_replace("'","''",$svalue);
}
与其尝试自己进行转义(sprintf是一个糟糕的选择),不如使用mssql_bind函数将参数绑定到查询。