Вывод целого числа из базы данных MySQL - PullRequest
1 голос
/ 12 апреля 2009

Я пытаюсь создать веб-сайт, на котором пользователь вводит данные на одном экране, и они публикуются в следующем сценарии. Этот сценарий предназначен для хранения этих данных в базе данных вместе с уникальным целочисленным идентификатором (что он делает), а затем генерирует две ссылки, содержащие уникальный идентификатор только что созданной записи. Поскольку база данных создает идентификатор, а не страницу раньше, я попытался запросить в базе данных самую последнюю запись (т.е. ту, которая имеет наибольшее значение уникального идентификатора) и использовать это число в ссылке, однако в текущем сценарии Идентификатор не отображается на странице. Это переменная вещь? Есть ли более простой способ получить идентификатор только что созданной страницы? Вот код:

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

Ответы [ 4 ]

2 голосов
/ 12 апреля 2009

Сразу после ввода mysql_query() для вставки вы можете использовать mysql_insert_id () , чтобы получить идентификатор вставленной строки.

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

2 голосов
/ 12 апреля 2009

Вам нужно mysql_insert_id.

1 голос
/ 12 апреля 2009

В качестве альтернативы вы можете сделать следующий запрос MySQL:

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

Хотя я не совсем понимаю, почему вы использовали ORDER BY shopId , но в последующем вызове линии:

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

Кроме того, действительно ли нужно делать этот вызов strval () ? PHP уже выполняет такое преобразование типов, когда вы вызываете echo () . И в настоящее время любые данные результата, возвращаемые либо mysql_query () или mysqli_query () , возвращаются в строковом формате, независимо от типа данных этого столбца в MySQL.

1 голос
/ 12 апреля 2009

Это называется 'id' или 'shopId'? Но вы должны использовать: http://php.net/mysql_insert_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...