Просмотр полной версии : MySQL Insert
AlexCooper
04.02.2013, 13:57
Здравствуйте.
Интересует вопрос, возможно ли что запрос
mysql_query("INSERT INTO mytable ('blah','blah')");
$id = mysql_insert_id(); может вернуть идентификатор от другой записи. Рассматривается ситуация при многочисленной регистрации, то-есть после выполнения mysql_query("INSERT INTO mytable ('blah','blah')"); другой пользователь из системы так же пройдёт регистрацию и mysql_insert_id(); вернет ид другой записи?
Вам нужно получить айди юзера после создания записи? Теоретически возможно, что вернёт левый айди.
AlexCooper
04.02.2013, 16:42
Вычитал что можно указывать параметр соединения.
int mysql_insert_id ([ resource $link_identifier = NULL ] )
Потому пока отложил и оставил себе вот такую версию (см.insert)
class Database {
private static $instance;
private $databaseName = '';
private $host = 'localhost';
private $user = '';
private $password = '';
private function __construct(){
$connection = mysql_connect($this->host, $this->user, $this->password);
$db = mysql_select_db($this->databaseName, $connection);
mysql_query('set character utf8');
mysql_query('set names utf8');
}
private function __destruct(){
mysql_close();
}
public static function getInstance(){
if(!self::$instance){
self::$instance = new Database();
}
return self::$instance;
}
public function connect() {
//db connection
}
public function query($query) {
$sql = mysql_query($query);
return $sql;
}
public static function numrows($query) {
$database = self::getInstance();
$sql = $database->query($query);
return mysql_num_rows($sql);
}
public static function fetch($query,$once=false) {
$database = self::getInstance();
$result = array();
$sql = $database->query($query);
while($rows = mysql_fetch_array($sql)) {
$data = array();
foreach ( $rows as $k=>$v) if (is_string($k)) $data[$k]=$v;
if ($once) return $data;
array_push($result,$data);
$NOT_NULL = true;
}
return ($NOT_NULL) ? $result : null;
}
public static function insert($query,$returnId=false) {
$database = self::getInstance();
$database->query($query);
return ($returnId) ? mysql_insert_id(): true;
}
}
Очень рекомендую забыть про старое и не поддерживаемое
расширение mysql и использовать mysqli.
В новой версии PHP старого расширения вообще больше нет.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.