SQL存储过程插入字符串"和/或'

时间:2014-04-01 18:00:53

标签: php sql sql-server stored-procedures

我正在尝试使用PHP来执行SQL Server存储过程

我的PHP基本上是

$value = $_REQUEST['value'];
$query = "EXEC Add_Line @value = '$value'";

我的存储过程基本上是

@value text = ''

Begin
INSERT INTO MyTable (Value) VALUES (@value)
End

我遇到的问题是该值是高度的文本字段,因此一般条目将类似于6' 2"

我的php查询变为

EXEC Add_Line @value = '6' 2"'

可以想象,SQL Server根本不喜欢这一行。

我尝试在我的存储过程中使用replace(@ value,"'","''")而不是@value,但我似乎无法让它发挥作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

对于其他人来看这个解决方案,Sparky指出问题是SQL甚至不会尝试执行该过程因为看到了错误。我将我的php修改为类似的东西

$value = $_REQUEST['value'];
$new = str_replace("'", "''", $value);
$query = "EXEC Add_Line @value = '$new'";

这项工作完美无缺。

归功于Sparky。

答案 1 :(得分:0)

尝试在PHP代码中替换...

问题是您的值永远不会到达存储过程,SQL将此语句视为错误。

SQL - > EXEC Add_line @valud = '6' 2"并且不知道2"装置

在PHP中引用它并传递引用值

SQL - > EXEC Add_line @valud = '6'' 2"' SQL知道如何处理它