我正在尝试使用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,但我似乎无法让它发挥作用。
有什么建议吗?
答案 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知道如何处理它