У меня есть следующий SQL-оператор, написанный на PHP.есть лучший способ использовать mysql_insert_id()
$sql='INSERT INTO pictures (`picture`) VALUES ("'.$imgs[$i]['name'].'",)';
$db->query($sql);
$imgs[$i]['sqlID'] = $this->id=mysql_insert_id();
$imgs[$i]['newImgName'] = $imgs[$i]['sqlID'].'_'.$imgs[$i]['name'];
$sql='UPDATE pictures SET picture="'.$imgs[$i]['newImgName'].'" WHERE id='.$imgs[$i]['sqlID'];
$db->query($sql);
Теперь это записывает имя изображения в таблицы таблицы базы данных. После этого я получаю mysql_insert_id(), и я обновляю имя изображения с последним id перед именем с помощью подчеркивания.
Я сделаю это, чтобы убедиться, что ни одно изображение не может быть одинаковым. Потому что все эти снимки сохраняются в одной папке. Есть ли другой способ сохранить этот идентификатор уже в первый раз, когда я установил sql-запрос? Или есть другие лучшие способы достижения этого результата?
Спасибо за все советы
[Пожалуйста, прекратите использовать mysql_ * функции] (http://stackoverflow.com/q/12859942/1238019) в новом коде, они [официально устарели] (https://wiki.php.net/rfc/ mysql_deprecation). Вместо этого посмотрите [подготовленные заявления] (http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html) и используйте [Mysqli] (http://php.net/manual/en/book.mysqli.php) или [PDO] (http://php.net/manual/en/book.pdo.php). – zessx
Нет. Это лучший способ получить идентификатор. 'select max (id) + 1' является абсолютно ненадежным и подчиняется условиям гонки - вы получите столкновения. –
Реальный вопрос: «вам действительно нужно скопировать первичный ключ таблицы в другое поле той же таблицы». – Vatev