Задать вопрос

Как можно получить ID последних записей в бд?

Добрый день, подскажите по такому вопросу, есть такой скрипт
$products = 'INSERT INTO product(sku, supplier, quantity, price, status) VALUES';
         foreach($xml->products as $product) {
         $products .= sprintf('("%s", "%s", "%s", "%s", "%s"),', $product->product_code, 'supplier', '$product->stock, $product->price,  '1');
}
$db->query($products);

Но проблема заключается в том что мне надо еще некоторые данные внести в другою таблицу, но для этого мне надо получить id послдених товаров. Я попробовал сделать так
$ids[] = $db->insert_id();
Но получаю ошибку. Где я ошибаюсь?
Заранее благодарен за любой совет
PS для соединения с бд
function connectDB()
{
	$dbHostNameWithPort = DB_HOSTNAME;
	$dbUserName = DB_USERNAME; 
	$dbPassword = DB_PASSWORD;
	$dbDB = DB_DATABASE;
	$dbLink = mysqli_connect( $dbHostNameWithPort, $dbUserName, $dbPassword );	
	$dbLink->query("SET character_set_results=utf8");
	$dbLink->query("set names 'utf8'");
	$dbLink->query( "USE ".$dbDB .";" );
	return $dbLink;
}
  • Вопрос задан
  • 187 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Никаких "последних записей в бд" mysql не существует.
Получить можно только один ид - последней вставленной строки. одной.
Поэтому если нужны айдишники, то вставлять надо по одной.

Весь этот ужас и шаманские пляски с бубном надо переписать
для соединения с бд
function connectDB()
{
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $dbLink = mysqli_connect( DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);	
    $dbLink->set_charset("utf8mb4");
    return $dbLink;
}
и сам запрос
$sql = "INSERT INTO product(sku, supplier, quantity, price, status) 
        VALUES (?, 'supplier', ?, ?, 1)";
$stmt = $db->prepare($sql);
$ids = [];
foreach($xml->products as $product) {
    $stmt->bind_param("sss", ...[$product->product_code, $product->stock, $product->price]);
    $stmt->execute();
    $ids[] = $db->insert_id;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы