Domanda

Sto cercando di fare un sito web in cui un utente immette i dettagli su uno schermo, e sono pubblicati sul seguente script. Questo script è destinato a memorizzare questi dati in un database con un ID unico intero (che lo fa), e quindi generare due link che contengono l'ID univoco del record appena creato. Poiché il database crea l'ID piuttosto che la pagina prima, ho cercato di interrogare il database per la cronaca più recente (cioè quella con il più alto valore di ID univoco) e usare quel numero nel collegamento, ma con lo script corrente ID non sembra mostrare nella pagina. E 'una cosa tipo variabile? C'è un modo più semplice per ottenere l'ID della pagina appena creata? Ecco il codice:

$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);
È stato utile?

Soluzione

Subito dopo si fa la mysql_query() per l'inserto, è possibile utilizzare mysql_insert_id () per ottenere l'ID della riga inserita.

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

Altri suggerimenti

È necessario mysql_insert_id .

E 'chiamato 'id' o 'shopId'? Ma si dovrebbe usare: http://php.net/mysql_insert_id

In alternativa, è possibile effettuare la seguente query MySQL:

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

Anche se sono confusa sul motivo per cui si è utilizzato ORDER BY shopId , ma in una chiamata di linea in seguito:

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

Inoltre, c'è davvero alcun bisogno di fare che strval () chiamare? PHP fa già che la conversione tipo per voi quando si chiama echo () . E, attualmente, tutti i dati dei risultati restituiti da entrambi, mysql_query () o mysqli_query () , viene restituito in formato stringa, indipendentemente dal tipo di dati che la colonna in MySQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top