Pergunta

Estou tentando criar um site no qual um usuário insere detalhes em uma tela e eles são publicados no script a seguir. Esse script destina -se a armazenar esses detalhes em um banco de dados, juntamente com um ID inteiro exclusivo (o que ele faz) e, em seguida, gerar dois links que contêm o ID exclusivo do registro que acabamos de ser criados. Como o banco de dados cria o ID e não a página antes, tentei consultar o banco de dados para o registro mais recente (ou seja, o mais alto valor de identificação exclusivo) e usar esse número no link, no entanto, com o script atual, o script atual, o O ID não parece aparecer na página. É uma coisa do tipo variável? Existe uma maneira mais simples de criar o ID da página? Aqui está o 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);
Foi útil?

Solução

Logo depois de fazer o mysql_query() Para a inserção, você pode usar mysql_insert_id () Para obter o ID da linha inserida.

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

Outras dicas

Você precisa mysql_insert_id.

É chamado de 'id' ou 'shopid'? Mas você deve usar: http://php.net/mysql_insert_id

Como alternativa, você pode fazer a seguinte consulta MySQL:

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

Embora eu esteja confuso sobre por que você usou Ordem de Shopid Mas em uma chamada de linha posterior:

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

Além disso, existe realmente alguma necessidade de fazer isso strval () ligar? O PHP já faz esse tipo de conversão para você quando você liga eco(). E, atualmente, quaisquer dados de resultado retornados de qualquer um mysql_query () ou mysqli_query (), é retornado no formato da string, independentemente do tipo de dados dessa coluna no MySQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top