2013-04-05 4 views
-1

Я пытался выяснить, почему эта функция работает на хроме, но не на firefox.Функция mysql_insert_id возвращается 0

У меня есть поле автоматического приращения, которое является моим первичным ключом, из которого я получаю свой идентификатор. Вот мой код.

if (isset($_GET['id'])) { 
    $id = $_GET['id']; 
} else { 
    $id = mysql_insert_id(); 
    echo $id; 
} 

Я пробовал поместить свое соединение в функцию следующим образом, но он по-прежнему не работает. Любые указатели будут оценены. Кроме того, я знаю о функциях mysqli, я использую эти функции, потому что настройка пользователя довольно старая.

$id = mysql_insert_id($conn); 

Вот мой код, который делает вставку.

sprintf("INSERT INTO `trade_show_orders` (`SetupDate`,`SetupEndDate`,`ShowName`,`Location`,`Literature`,`StartDate`,`EndDate`,`Attendees`,`Projected`,`File`,`Giveaways`,`AddressBox`,`LocationType`,`Title`,`FirstName`,`LastName`,`Email`,`AddressOne`,`AddressTwo`,`Zip`,`Special`,`OrderDate`,`ShippingLocation`,`ShippingAddressOne`,`ShippingAddressTwo`,`ShippingZip`,`ShippingSpecial`) VALUES ('$setupDate','$endSetup','%s','%s','$values','$eventStart','$eventEnd','%d','%d','".basename($_FILES['fileUpload']['name'])."', '%s','off','%s','%s','%s','%s','%s','%s','%s','%d','%s',NOW(),'%s','%s','%s','%d','%s')", mysql_real_escape_string($_POST['showName']), mysql_real_escape_string($_POST['location']), $_POST['numberAttendees'], $_POST['visitors'], mysql_real_escape_string($_POST['giveaways']), mysql_real_escape_string($_POST['locationType']), mysql_real_escape_string($_POST['personalTitle']), mysql_real_escape_string($_POST['personalFirstName']), mysql_real_escape_string($_POST['personalLastName']), mysql_real_escape_string($_POST['personalEmail']), mysql_real_escape_string($_POST['personalAddressOne']), mysql_real_escape_string($_POST['personalAddressTwo']), $_POST['personalZip'], mysql_real_escape_string($_POST['personalSpecial']), mysql_real_escape_string($_POST['shippingLocation']), mysql_real_escape_string($_POST['shippingAddressOne']), mysql_real_escape_string($_POST['shippingAddressTwo']), $_POST['shippingZip'], mysql_real_escape_string($_POST['shippingSpecial'])); 
+1

Эта функция вообще не зависит от браузера. Это зависит только от того, что вы вставили что-то в базу данных или нет. Если вы ничего не вставили, конечно, вы получите 0. –

+0

Ну, я вижу, что он работает на хроме, а не на firefox. Я знаю, это не имеет значения, но это то, что я получаю. – wowzuzz

+2

Действительно, единственный способ, которым он мог работать в одном браузере, а не другой, - это если один браузер отправил на сервер различную информацию. Таким образом, вам не хватает некоторых критических компонентов для устранения неполадок: ошибка javascript, код javascript и отправляемые данные (также код, который принимает сообщения на сервере) – Kato

ответ

2

mysql_insert_id() будет возвращать только идентификатор, если вы проделали INSERT запрос с текущего соединения. Это означает, что он не вернет идентификатор из запроса страницы «три клика» назад. он не вернет идентификатор, выполняемый другим скриптом, который выполняется в том же самом, потому что это сделано с использованием другого соединения с mysql.

Итак, покажите остальную часть кода, который фактически вставляет. PHP не должен заботиться о том, какой браузер работает на пульте дистанционного управления. Это всего лишь HTTP-запрос с некоторыми данными в отношении PHP. Если есть проблема с конкретным браузером, это будет в некотором клиентском коде, который взрывается, например. некоторый плохой javascript делает запрос AJAX и не заполняет поле должным образом.

+0

Посмотрите мои правки вверху. – wowzuzz

+0

Вы проверили, завершен ли запрос? например '$ result = mysql_query ($ sql) или die (mysql_error())'? –

+0

Да, это действительно так. Я много раз тестировал на вставке. – wowzuzz

0

Оказывается, это не имеет ничего общего с моей вставкой.

По-видимому, когда вы используете изображения с изображениями в форме в Firefox, IE. Он переименовывает отправку изображения с «submit» на «submit_x» или «submit_y»

Chrome и Safari ищут как submit, так и submit_x, submit_y с изображениями.

Firefox и IE 7,8,9 ищут только submit_x и submit_y, что объясняет причину, по которой она работает только на хроме.

Смежные вопросы