我正在尝试使用 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 知道如何处理它