SQL 存储过程 插入带有“和/或”的字符串


SQL Stored Proc Insert string with " and/or '

我正在尝试使用 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,但我似乎无法让它工作。

有什么建议吗?

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

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

这工作完美。

所有的功劳都归于斯帕基。

尝试在

PHP 代码中执行替换...

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

SQL --> EXEC Add_line @valud = '6' 2",不知道 2" 是什么意思

通过在 PHP 中引用它并传递引用的值

SQL -

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