当我在SQL for SQL Management Studio中使用单引号时,如何添加单引号

时间:2015-04-25 20:40:50

标签: php sql-server regex

我在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'),

我在这里做错了什么?

3 个答案:

答案 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