我有一个非常简单的INSERT语句,我可以使用SSMS运行。当我使用PHP mssql_execute或mssql_query运行相同的INSERT语句时,SQL事件探查器向我显示,当由PHP发送时,'TextData'与SSMS发送时相同。问题是当通过PHP代码执行时,INSERT实际上从未发生,而当从SSMS内部运行时,它插入就好了。有什么想法吗?
MS SQL:2008 R2
PHP:5.4,freetds 8.0
PHP错误:
PHP Warning: mssql_execute(): message: Internal Query Processor Error: The query processor could not produce a query plan. For more information, contact Customer Support Services. (severity 16) in /home/...
编辑:添加了PHP相关的PHP
<?php
putenv('FREETDS=/home/###/freetds.conf');
putenv('FREETDSCONF=/home/###/freetds.conf');
$link = mssql_connect('mssqlserver', '###','###'); // connect
if ( !$link ) {
if ( function_exists('error_get_last') ) {
var_dump(error_get_last());
}
die('connection failed');
}
// Create a new statement
$stmt = mssql_init('Db.dbo.SprocName');
// Some values
$a = 1;
$b = 'test';
$c = 'myname';
// Bind values
mssql_bind($stmt,'@a',$a,SQLINT2,false,false);
mssql_bind($stmt,'@b',$b,SQLVARCHAR,false,false,8000);
mssql_bind($stmt,'@c',$c,SQLVARCHAR,false,false,50);
// Execute the statement
mssql_execute($stmt);
// And we can free it like so:
mssql_free_statement($stmt);
?>
答案 0 :(得分:0)
存储过程(Db.dbo.SprocName)在表上执行了一个简单的插入,让我们调用它(Db.dbo.TableName)。当我从Db.dbo.TableName中删除外键时,PHP mssql INSERT调用开始工作。
我意识到这在技术上解决了这个问题,但在实践中它是不可接受的。那些FK是有原因的:)。有什么想法吗?