我在上遇到了问题,我不想连接到这个SQL服务器,我想让数据为插入到这个数据库中的行做好准备,我有一个文本文件,其中有我想要插入到SQL server中的字符串行,行如下:
You're Doing It Wrong!!,Mike Walsh,Intermediate
因此,应该像这样为sql server做好准备。
You''re Doing It Wrong!!,Mike Walsh,Intermediate
我也有这样的台词:
Never Have to Say "Mayday!!!" Again
这件事会成为问题吗?我也有什么计划吗?
我尝试使用addslash,然后用单引号替换斜杠,方法是:
$str=",('".addslashes ($array[0])."')";
$str=str_replace("\\","\'",$str);
echo $str;
我做了逗号和括号,当我在sql server中进行insert查询时,结果将是:
,('You\''re Doing It Wrong!!'),
,('Never Have to Say \'"Mayday!!!\'" Again'),
我在这里做错了什么?
发布于 2015-04-25 12:47:21
使用准备好的语句是最好的方法。如果坚持使用正则表达式,则可以使用preg_replace
使用双引号,以便有偶数的相应单引号:
''|(')
代之以''
。请参阅演示
示例PHP代码:
$re = "/''|(')/";
$str = "You're Doing It Wrong!!,'''Mike Walsh'',Intermediate";
$subst = "''";
$result = preg_replace($re, $subst, $str);
输出:
You''re Doing It Wrong!!,''''Mike Walsh'',Intermediate
发布于 2015-04-25 12:45:24
您正在错误地处理此问题:与其准备将字符串“粘贴”到Server的查询中,不如将SQL参数化,并将字符串作为参数传递。这样你就完全不用转义了,引号或其他特殊字符的数量也不重要:
$sql = "INSERT INTO MyTable(id,name) VALUES (?,?)"
$params = array($someId, $name)
$sql_srv_query($db_conn, $sql, $params);
发布于 2015-04-25 12:46:45
可以试试这个
$str = "You're Doing \"It Wrong!!,Mike Walsh,Intermediate";
$st = addslashes($str);
首先,您可以将“”替换为“\",然后使addslashes
https://stackoverflow.com/questions/29870482
复制