(當我寫這篇文章的時候,它對MSSQL數據庫沒有任何問題,現在我正在使用SELECT LAST_INSERT_ID()爲MySQL寫同樣的東西。而不是@SCOPE_IDENTITY) 我有一段代碼進入公司,然後是該公司的客戶詳細信息。第一個SELECT LAST_INSERT_ID()適用於將company_id從公司表插入到客戶表中,但隨後會引發錯誤以檢索client_id。SELECT LAST_INSERT_ID()在直接MySQL查詢中工作,但不是間歇性地工作PHP QUERY
下面的代碼: ////設置初始SQLS現在
$SQLINSERTCOMPANY = "insert into companies(company_name,is_organisation,company_regno,company_url,is_active,entry_date)
VALUES ('$company_name',$is_organisation,'$company_regno','$company_url',1,'$entry_date');";
$SQLINSERTCOMPANYDETAILS = "insert into clients (client_name,client_tel,client_mobile,client_email,client_usern,client_pwdx,mailing_list,savedsession,salt,company_id)
VALUES ('$client_name','$client_tel','$client_mobile','$client_email','$client_email','$psw',$sign_up,'$PHPSESSIONID','$salt'";
$SQLUPDATECOMPANY = "update clients
set company_name = '$company_name',
is_organisation = $is_organisation,
company_regno = '$company_regno',
company_url = '$company_url',
is_active = 1,
entry_date = '$entry_date' ";
$SQLUPDATECOMPANYDETAILS = "update clients
set client_name = '$client_name',
client_tel = '$client_tel',
client_mobile = '$client_mobile',
client_email = '$client_email',
client_usern = '$client_email',
client_pwdx = '$psw',
mailing_list = $sign_up,
savedsession = '$PHPSESSIONID' ";
////get the cart for later use if the cart has items
$cart = $_SESSION['cart'];
if($cart){
$strSQL = "select *
from category_items
where category_item_id IN ($cart) order by category_items.item_code;";
$query_get_value = mysql_query($strSQL) or die ('query failed ' . mysql_error());
}
///// add a new client here
if($_POST['action'] == "add"){
////// Insert new company or just update the details
if($no_of_client_entry == 0) {
////// update clients
$strSQL1 = $SQLINSERTCOMPANY;
////// Insert Client Details
$strSQL2 = $SQLINSERTCOMPANYDETAILS . ",(SELECT LAST_INSERT_ID())); SELECT LAST_INSERT_ID() as NEWID;";
$sent_to = $client_email;
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= "FROM: TheImageLounge<no-reply>";
$subject = "Welcome to The Image Lounge";
$message = "<html><head><title>Error Report</title>";
$message .= "<style type='text/css'>
body{margin: 0 auto;text-align:left;}
h1, h2, h3 { margin:10px;padding:10px;background-color:#ccc;}
</style>";
$message .= "</head><body>";
$message .= "<p>Welcome to Website... TBC/p>";
$message .= "<p>Your Details Are:</p>";
$message .= "<p>Your username: $client_email<br />";
$message .= "<p>Your password: " . $_SESSION['client_psw'] . "</p>";
$message .= "<p>We hope that you will enjoy using our website.</p>";
$message .= "<p>Thank You and best regards,<br />";
$message .= "<p>The Website.</p>";
$message .= "</body></html>";
$sentOK = mail($sent_to,$subject,$message,$headers);
} else { ///// just update the client details
$client_id = $clients_rows['client_id'];
////// update clients
$strSQL1 = $SQLUPDATECOMPANY . " where client_id = $client_id;";
////// Insert Client Details
$strSQL2 = $SQLUPDATECOMPANYDETAILS . " where client_id = $client_id; SELECT client_id as NEWID from clients where client_id = $client_id;";
} ///// End if
///echo $strSQL2;
///// Run transactions
echo $strSQL1 . "<br />";
echo $strSQL2;
$query_insert_client = mysql_query($strSQL1) or die('' . mysql_error());
$query_insert_clients = mysql_query($strSQL2) or die('' . mysql_error());
$last_client = mysql_fetch_assoc($query_insert_clients);
$client_id = $last_client['NEWID'];
mysql_free_result($query_insert_clients);
當我輸出的SQL它看起來像這樣:
insert into companies(company_name,is_organisation,company_regno,company_url,is_active,entry_date) VALUES ('Individual',0,'','',1,'2011-06-08 14:16:33');
insert into clients (client_name,client_tel,client_mobile,client_email,client_usern,client_pwdx,mailing_list,savedsession,salt,company_id) VALUES ('Andis','0777','','[email protected]','[email protected]','6be86ab8355979352cdd28bbe7026be71a196936fc1ab0c315629f68c0d5f9162acd20b201a27d0ced0cfd53a8e880a1e8bf3714833ed9c4cbe6d0fe3bf15ca0',0,'8730dfec5ce01b315e1a31007185c486','SALTYDOG',(SELECT LAST_INSERT_ID())); SELECT LAST_INSERT_ID() as NEWID;
但後來我得到這個錯誤
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; SELECT LAST_INSERT_ID() as NEWID' at line 2
如果我複製並將輸出的SQL粘貼到MySQL,它工作正常。所以我不確定爲什麼這在第二個查詢失敗。這在使用MSSQL數據庫時工作正常。
任何幫助將不勝感激。
感謝
安迪
感謝第二。好吧,如果我能夠用MSSQL_QUERY做到這一點,那麼MySQL語句怎麼不讚賞呢? – 2011-06-08 13:59:43