我在SQL Management Studio遇到问题,我不想连接到这个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
这个会成为一个问题吗?我也应该有任何计划吗?
我尝试使用addlash,然后通过执行以下操作将斜杠替换为单引号:
$str=",('".addslashes ($array[0])."')";
$str=str_replace("\\","\'",$str);
echo $str;
当我在sql server中插入查询时,我做了逗号和括号 这个结果将是:
,('You\''re Doing It Wrong!!'),
,('Never Have to Say \'"Mayday!!!\'" Again'),
我在这里做错了什么?
答案 0 :(得分:2)
您正在以错误的方式解决此问题:而不是准备字符串粘贴"进入SQL Server的查询,参数化您的SQL,并将该字符串作为参数传递。这样你根本不必逃避它,引号或其他特殊字符的数量也不重要:
$sql = "INSERT INTO MyTable(id,name) VALUES (?,?)"
$params = array($someId, $name)
$sql_srv_query($db_conn, $sql, $params);
答案 1 :(得分:0)
可以试试这个
$str = "You're Doing \"It Wrong!!,Mike Walsh,Intermediate";
$st = addslashes($str);
首先你可以替换"使用\",然后制作addslashes
答案 2 :(得分:0)
使用预准备语句是最好的方法。如果您坚持使用正则表达式方法,则可以使用preg_replace
加倍单引号,以便产生偶数个单引号:
''|(')
并替换为''
。见demo
示例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