PDA

Просмотр полной версии : 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(); вернет ид другой записи?

DaFive
04.02.2013, 14:51
Вам нужно получить айди юзера после создания записи? Теоретически возможно, что вернёт левый айди.

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;
}
}

ZicoRio
05.02.2013, 15:20
Очень рекомендую забыть про старое и не поддерживаемое
расширение mysql и использовать mysqli.

В новой версии PHP старого расширения вообще больше нет.