我有一个非常简单的 INSERT 语句,可以使用 SSMS 运行。当我使用 PHP mssql_execute 或 mssql_query 运行相同的 INSERT 语句时,SQL 分析器显示,当由 PHP 发送时,'TextData' 与由 SSMS 发送时相同。问题是当通过 PHP 代码执行时,INSERT 从未真正发生,而当从 SSMS 中运行时,它插入就好了。有任何想法吗?
微软 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);
?>