Riprendendo un numero intero da un database MySQL
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);
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.