user3315848
user3315848

Reputation: 77

Getting Error when inserting records using pdo sqlsrv

hi am trying to insert records from my form into a table called dbo.[TABLE$Leave Request]. I get this error when i try to submit;

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'. ) ) 

My code

 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));
}

}  

Upvotes: 0

Views: 63

Answers (2)

Chris
Chris

Reputation: 137034

Double-quoted strings perform variable interpolation in PHP. PHP tries to insert the value of a (presumably nonexistent) variable $Leave into your string.

Use single quotes instead:

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

Alternatively, escape your $ character with \, i.e. TABLE\$Leave.

Upvotes: 3

Olaf Dietsche
Olaf Dietsche

Reputation: 74068

The error message already says it:

Invalid object name 'dbo.TABLE Request'.

When you compare this to your code

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

you see $Leave, which is replaced by an empty string, giving TABLE Request.

Upvotes: 1

Related Questions