我正在尝试将表单中的记录插入名为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));
}
}
答案 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
。