Pregunta

Estoy tratando de hacer un sitio web en el que un usuario ingrese detalles en una pantalla, y se publican en el siguiente script. Este script está destinado a almacenar estos detalles en una base de datos junto con una ID entera única (que hace), y luego generar dos enlaces que contienen la ID única del registro que acaba de crear. Dado que la base de datos crea la identificación en lugar de la página antes, he intentado consultar la base de datos para el registro más reciente (es decir, el que tiene el valor de identificación único más alto) y usar ese número en el enlace, sin embargo, con el script actual el script actual. ID no parece aparecer en la página. ¿Es una cosa de tipo variable? ¿Existe una forma más simple de obtener la identificación de la página que acaba de crear? Aquí está el código:

$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);
¿Fue útil?

Solución

Justo después de que hagas el mysql_query() Para el inserto, puede usar mysql_insert_id () Para obtener la ID de la fila insertada.

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

Otros consejos

Necesitas mysql_insert_id.

¿Se llama 'id' o 'shopID'? Pero deberías usar: http://php.net/mysql_insert_id

Alternativamente, puede hacer la siguiente consulta MySQL:

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

Aunque estoy confundido sobre por qué usaste Pedir por shopid Pero en una línea de línea posterior::

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

Además, ¿hay realmente alguna necesidad de hacer eso? strval () ¿llamar? PHP ya hace ese tipo de conversión para usted cuando llame eco(). Y, actualmente, cualquier datos de resultados devueltos de cualquiera de los dos, mysql_query () o mysqli_query (), se devuelve en formato de cadena, independientemente del tipo de datos de esa columna en MySQL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top