mysql_insert_id函数返回0

时间:2013-04-05 14:59:39

标签: php

我一直试图弄清楚为什么这个函数在chrome上工作,但在firefox上没有。

我有一个自动增量字段,这是我获取id的主键。这是我的代码。

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']));

2 个答案:

答案 0 :(得分:2)

如果您使用当前连接完成了mysql_insert_id()查询,则

INSERT只会返回一个ID。这意味着它不会在“三次点击”之前从页面请求中返回ID。它不会返回由同时执行的其他脚本完成的ID,因为这是使用与mysql的不同连接完成的。

因此,显示实际执行插入的其余代码。 PHP根本不应该关心它在远程运行的浏览器。就PHP而言,它只是一个带有一些数据的HTTP请求。如果存在特定于浏览器的问题,那么它将会在某些客户端代码中爆炸,例如一些糟糕的javascript正在执行AJAX请求而没有正确填写字段。

答案 1 :(得分:0)

原来它与我的插入无关。

显然,当您在Firefox,IE中使用表单上的提交图像时。它将图像提交从“提交”重命名为“submit_x”或“submit_y”

Chrome和Safari会同时查找提交和提交__,提交带有图片的提交。

Firefox和IE 7,8,9只查找submit_x和submit_y,这解释了为什么它只适用于chrome。