使用pdo sqlsrv插入记录时出错

时间:2016-08-22 17:06:53

标签: php sqlsrv

我正在尝试将表单中的记录插入名为dbo的表中。[TABLE $ Leave Request]。我尝试提交时收到此错误;

Array ( [0] => Array ( [0] => 42S02 
                        [SQLSTATE] => 42S02 
                        [1] => 208 
                        [code] => 208 
                        [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'dbo.TABLE Request'. 
                        [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'dbo.TABLE Request'. ) ) 

我的代码

 if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "leave")) {
$sql = "INSERT INTO dbo.[TABLE$Leave Request] 
(dbo.[TABLE$Leave Request].id,
dbo.[TABLE$Leave Request].emp_ID,
dbo.[TABLE$Leave Request].leave_type,
dbo.[TABLE$Leave Request].date_applied,
dbo.[TABLE$Leave Request].leave_days,
dbo.[TABLE$Leave Request].start_date,
dbo.[TABLE$Leave Request].end_date,
dbo.[TABLE$Leave Request].supervisor,
dbo.[TABLE$Leave Request].leave_reason,
dbo.[TABLE$Leave Request].[year],
dbo.[TABLE$Leave Request].partner, 
dbo.[TABLE$Leave Request].phone) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
$params = array($_POST[id], 
$_POST[empid], 
$_POST[leave_type], 
$_POST[date_applied],
$_POST[leave_days],
$_POST[start_date],
$_POST[end_date],
$_POST[supervisor], 
$_POST[leave_reason],
$_POST[year],
$_POST[partner], 
$_POST[phone]);

$ins = sqlsrv_query( $conn, $sql, $params);
if( $ins === false ) {
    die( print_r( sqlsrv_errors(), true));
}

}  

2 个答案:

答案 0 :(得分:3)

Double-quoted strings perform variable interpolation in PHP。 PHP尝试将(可能不存在的)变量$Leave的值插入到字符串中。

改为使用单引号:

$sql = 'INSERT INTO dbo.[TABLE$Leave Request] 
        (dbo.[TABLE$Leave Request].id,
        ...';

或者,使用$转义\个字符,即TABLE\$Leave

答案 1 :(得分:1)

错误消息已经说明了:

  

无效的对象名称'dbo.TABLE Request'。

将其与代码进行比较时

$sql = "INSERT INTO dbo.[TABLE$Leave Request]

您看到$Leave,由空字符串替换,提供TABLE Request