2009-04-12 7 views
1

J'essaye de faire un site Web dans lequel un utilisateur entre des détails sur un écran, et ils sont postés sur le script suivant. Ce script est destiné à stocker ces détails dans une base de données avec un ID entier unique (ce qu'il fait), puis générer deux liens contenant l'ID unique de l'enregistrement qui vient d'être créé. Puisque la base de données crée l'ID plutôt que la page précédente, j'ai essayé d'interroger la base de données pour l'enregistrement le plus récent (celui avec la valeur d'ID unique la plus élevée) et d'utiliser ce numéro dans le lien. ID ne semble pas apparaître dans la page. Est-ce une chose de type variable? Existe-t-il un moyen plus simple d'obtenir l'identifiant de la page que vous venez de créer? Voici le code:Echoing un entier d'une base de données mySQL

$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); 

Répondre

2

Juste après avoir fait mysql_query() pour l'insertion, vous pouvez utiliser mysql_insert_id() pour obtenir l'ID de la ligne insérée.

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

1

Vous pouvez faire la requête MySQL suivante:

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

Bien que je suis confus quant à la raison pour laquelle vous avez utilisé ORDER BY shopId mais dans un appel en ligne plus tard:

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

De plus, est-il vraiment nécessaire de faire strval() appel? PHP fait déjà ce type de conversion pour vous quand vous appelez echo(). Et, actuellement, toutes les données de résultat renvoyées par l'un ou l'autre, mysql_query() ou mysqli_query(), est renvoyée au format chaîne, quel que soit le type de données de cette colonne dans MySQL.

Questions connexes