سؤال

أحاول إنشاء موقع ويب يقوم فيه المستخدم بإدخال تفاصيل عن شاشة واحدة، ويتم نشرها على البرنامج النصي التالي. يهدف هذا البرنامج النصي إلى تخزين هذه التفاصيل في قاعدة بيانات إلى جانب معرف عدد صحيح فريد (الذي يفعل)، ثم قم بإنشاء اثنين من الروابط التي تحتوي على معرف فريد من السجل الذي تم إنشاؤه للتو. نظرا لأن قاعدة البيانات تنشئ المعرف بدلا من الصفحة من قبل، فقد حاولت الاستعلام عن قاعدة البيانات للحصول على أحدث سجل (أي واحد مع أعلى قيمة معرف فريدة) واستخدام هذا الرقم في الرابط، ولكن مع البرنامج النصي الحالي لا يبدو أن المعرف يظهر في الصفحة. هل هو شيء نوع متغير؟ هل هناك طريقة أبسط للحصول على معرف الصفحة التي تم إنشاؤها للتو؟ إليك الرمز:

$css = $_POST['css'];
$shopName = strip_tags($_POST['title']);
$email = $_POST['email'];

$con = mysql_connect("***","***","***");
if (!$con)
{
    die('Could not connect to database: '. mysql_error());
}

mysql_select_db("***", $con);

$sql = "INSERT INTO wps_Shops (shopName, shopEmail, shopStyle)
    VALUES ('$shopName', '$email', '$css')";

$quer = mysql_query($sql);

$result = mysql_query("SELECT *
                    FROM wps_Shops
                    ORDER BY shopId DESC
                    LIMIT 1");

$lastShop = mysql_fetch_array($result);

$id = strval($lastShop['id']);

echo ("Id: ".$id);

if ($quer)
{
    echo("<h1>Shop created</h1>");
    echo("<p><a href=\"shop.php?id=$id\">Go to shop</a></p>");
    echo("<p><a href=\"addproducts.php?id=$id\">Add products</a></p>");
}

mysql_close($con);
هل كانت مفيدة؟

المحلول

مباشرة بعد أن تفعل mysql_query() لإدراج، يمكنك استخدام mysql_insert_id () للحصول على معرف الصف المدرج.

mysql_query("INSERT INTO........");
$id=mysql_insert_id();

نصائح أخرى

انت تحتاج mysql_insert_id.

هل يطلق عليه "معرف" أو "ShopiD"؟ ولكن يجب عليك استخدام: http://php.net/mysql_insert_id.

بدلا من ذلك، يمكنك إجراء استعلام MySQL التالي:

$query = "SELECT * FROM wps_Shops WHERE id=LAST_INSERT_ID()";
$result = mysql_query($query);

على الرغم من أنني مرتبك حسب سبب استخدامك النظام من قبل المتجر ولكن في مكالمة خط لاحقة:

$id = strval($lastShop['id']);

أيضا، هل هناك حقا أي حاجة لجعل ذلك ستيفال () يتصل؟ PHP بالفعل يفعل ذلك هذا النوع التحويل لك عند الاتصال صدى صوت(). وبعد وحاليا، يتم إرجاع أي بيانات نتيجة من أي mysql_query () أو mysqli_query (), ، يتم إرجاعه في تنسيق السلسلة، بغض النظر عن نوع بيانات العمود هذا في MySQL.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top