SELECT LAST_INSERT_ID () работает в Direct MySQL Query, но не прерывается PHP QUERY

(Учитывая, что я написал это, он работает для базы данных MSSQL без проблем, и теперь я пишу то же самое для MySQL, используя SELECT LAST_INSERT_ID (), а не @SCOPE_IDENTITY). У меня есть часть кода, который входит в компанию, а затем детали клиента для этой компании. Первый SELECT LAST_INSERT_ID () отлично подходит для вставки company_id из таблицы компаний в таблицу клиентов, но затем выдает ошибку для извлечения client_id.

Вот код: //// Устанавливаем исходные SQL-запросы

$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','','andrew@com','andrew@com','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.

Любая помощь была бы благодарна.

благодаря

и я

Вы не можете одновременно запускать 2 запроса с помощью mysql_query() вы можете сделать это с помощью PDO.

Чтобы достичь своей цели, вы можете полностью удалить SELECT LAST_INSERT_ID() as NEWID и использовать mysql_insert_id()

вы пытаетесь отправить несколько запросов за один раз. из документов:

mysql_query () отправляет уникальный запрос (несколько запросов не поддерживаются)

вы также можете рассмотреть возможность использования функции mysql_insert_id вместо выдачи ручного запроса: http://www.php.net/manual/en/function.mysql-insert-id.php

 error: 1. u did not close the insert tag just do simple change $addorder = "INSERT INTO table_name () VALUES ()"; $id = "SELECT LAST_INSERT_ID() as new_id"; mysql_query($addorder) or die("not added in to the orders db:<br />".mysql_error()."<br />".$addorder."<hr />"); echo($id); 

SELECT LAST_INSERT_ID () – это запрос, который запускается в mysql, но php только позволяет запускать один запрос за раз, поэтому выполнение SELECT LAST_INSERT_ID () в вашем запросе не работает.

мое предложение – назначить переменную значение SELECT LAST_INSERT_ID () и вставить переменную в ваш запрос.

Это не утверждение SELECT, это неправильно, это факт, что вы делаете два утверждения за один раз, что не допускается библиотекой MySQL PHP. Просто выполните два разных запроса, чтобы решить проблему.