0
我需要得到的ID陣列的用戶的加入到數據庫函數中:插入值返回標識的PDO以MSSQL使用ODBC
function insert_test($pdo, $fullname, $email) {
if ($SQL = $pdo->prepare("INSERT INTO subscribers ([dateAdded],[dateUpdated],[fullname],[email],[isActive]) VALUES (GETDATE(), GETDATE(), :fullname, :email, 1)")) {
$SQL->bindValue(':fullname', $fullname, PDO::PARAM_STR);
$SQL->bindValue(':email', $email, PDO::PARAM_STR);
$SQL->execute();
return array('status'=> true);
} else {
return array('status'=> false);
}
}
但是我首先要弄清楚如何獲得都有點吃力價值觀和陣列內歸還,像這樣:
return array('status'=> true,'ids'=> $ids);
我已閱讀並發現SCOPE_IDENTITY()可能獲得這些價值的最可靠的方法,但我不知道在哪裏把它放在這個功能返回我需要的值。數據庫中的主鍵是id列。
難道是這樣的:
if ($SQL = $pdo->prepare("INSERT INTO subscribers ([dateAdded],[dateUpdated],[fullname],[email],[isActive]) VALUES (GETDATE(), GETDATE(), :fullname, :email, 1) SELECT SCOPE_IDENTITY()"))
,然後綁定一個參數後調用$ IDS還是我在完全想這個?
任何幫助將不勝感激!
編輯:我一直在使用類似功能的一個在this question嘗試過,並取得不合法的遊標錯誤,以便適應它看起來像這樣(請注意closeCursor是如何解決無效指針錯誤):
function insert_test($pdo, $fullname, $email) {
if ($SQL = $pdo->prepare("INSERT INTO subscribers ([dateAdded],[dateUpdated],[fullname],[email],[isActive]) OUTPUT INSERTED.id VALUES (GETDATE(), GETDATE(), :fullname, :email, 1)")) {
$SQL->bindValue(':fullname', $fullname, PDO::PARAM_STR);
$SQL->bindValue(':email', $email, PDO::PARAM_STR);
$SQL->execute();
$SQL->closeCursor();
$ids = $SQL->fetchAll(PDO::FETCH_ASSOC);
return array('status'=> true, 'id' => $ids);
} else {
$pdo = null;
return array('status'=> false);
}
}
從這個函數的返回,現在是這樣的:
Array
(
[status] => 1
[id] => Array
(
)
)
所以看起來輸出不工作,因爲它應該?這是越來越陌生和陌生...
爲什麼你使用複數形式?任何理由你期望多個ID? –
是的,對不起,我應該在問題中概述了這一點,我將一次接收一組訂閱者,並且需要在插入它們時獲取每個訂閱者的ID,所以也許這個函數會放在一個foreach循環中以獲得每一個?那有意義嗎? – LewisJWright
我不知道MS SQL,但可能如此 –