我想我在一些 PHP 代码中遇到了竞争条件,mysql_insert_id() 返回 0 - 但我无法弄清楚原因。
$insertsess=mysql_query("insert into cior_sessions values ('','$cid','$uid','$tutook',STR_TO_DATE('$sessiondate','%d/%m/%Y'),'$sessionnum')");
$sessionid=mysql_insert_id($insertsess);
echo "";
我自己无法重现该问题,但可以看到其他用户重现了(由于他们随后所做的是 SID 为 0 的结果,但并非始终如此)。
我对此的理解是 mysql_insert_id 会等待 $insertsess 的查询完成——这是错误的吗?如果是这样,我是否需要有诸如看门狗循环之类的东西来等待 mysql_insert_id 返回非零值?这似乎有点愚蠢。 :/
1 Câu trả lời
当您调用 mysql_insert_id()
时,您应该使用连接资源,而不是像您在发布的代码片段中那样使用结果集资源。
$link = mysql_connect('dbhost', 'dbuser', 'dbpass', 'dbname');
$result = mysql_query("Some query here');
$lastId = mysql_insert_id($link); // you have used your result set here
关于PHP - mysql_insert_id() 和竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18811184/
Tôi đang chạy PHP trong một tệp JavaScript, như... var = '';). Tôi cần sử dụng JavaScript để quét chuỗi để tìm các ký tự phân cách PHP (mở và đóng PHP). Tôi đã biết cách rồi
Tôi muốn có thể làm điều gì đó như thế này: php --determine-oldest-supported-php-version test.php và nhận được kết quả đầu ra này: 7.2 Nghĩa là nhị phân php được kiểm tra theo thử nghiệm.
Tôi đang phát triển một trang web php lớn hiện không sử dụng bất kỳ framework nào. Câu hỏi lớn của tôi là, liệu có nên thử tích hợp dần dần khung vào ứng dụng theo thời gian, chẳng hạn như tạo các tiện ích mới và cập nhật các tiện ích cũ không? Ví dụ, tất cả các trang đều được phục vụ trực tiếp thông qua URL.
Dưới đây là mã nguồn của tôi, tôi muốn sử dụng biến $r1 nằm trong tập lệnh php ở cuối trong một tập lệnh php khác ở đầu cùng một trang. Tôi cần một giải pháp đơn giản cho vấn đề này. Tôi muốn sử dụng biến đó trong truy vấn cập nhật có trong mã. $tên)
Tôi đang tạo một trang web thực hiện nhiều chuyển hướng PHP tùy thuộc vào các tình huống khác nhau. Giống như thế này... header("Location: somesite.com/redirectedpage.php"); để bảo mật