在其他情況下我可能會嘗試使用如何使用帶有SQL Server的PDO獲取最後一個INSERT行的ID?
$result = mssql_query("INSERT INTO table (fields) VALUES (data);
SELECT CAST(scope_identity() AS int)");
但我會插入用戶提交的數據,我想繼續使用PDO,它返回一個空數組。
不幸的是,我在Linux服務器上運行PHP,並使用dblib與Microsoft SQL Server進行交互,但不支持PDO::lastInsertID()
。
請幫忙!
更新包含的代碼示例
下面是我使用的代碼:COL1是int identity
類型的字段和COL2是datetime
與getdate()
默認。
// Connect to db with PDO
$pdo = new PDO('dblib:host=' . $host . ';dbname=' . $database . ';', $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
// Connect to db with MSSQL
$sql = mssql_connect($host, $username, $password);
mssql_select_db($database, $sql);
// Create SQL statement
$query = "INSERT INTO [table] (col3, col4, col5)
VALUES ('str1', 'str2', 'str3');
SELECT SCOPE_IDENTITY() AS theID;";
// Run with MSSQL
echo "Using MSSQL...\n";
$result = mssql_query($query);
$the_id = mssql_result($result, 0, 'theID');
echo "Query OK. Returned ID is " . $the_id . "\n";
// Run with PDO
echo "\nUsing PDO...\n";
$stmt = $pdo->query($query);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
這是被顯示的內容:
Using MSSQL...
Query OK. Returned ID is 149
Using PDO...
Array
(
)
我很想找出我做一些愚蠢的事,而不是遇到了一個可怕的死衚衕:)
儘管'PDO'仍然返回一個空數組。難道我做錯了什麼? – Kalessin 2011-05-26 15:02:55
也許嘗試別名結果:'SELECT scope_identity()AS id' – 2011-05-26 15:24:49
感謝您的建議。儘管如此,我仍然得到一個空數組。我已更新我的問題以包含我正在使用的測試代碼。 – Kalessin 2011-05-26 16:35:50