PDA

View Full Version : سوال: برگرداندن مقدار صفر درmysqli_insert_id()



amin_sltny
دوشنبه 19 آبان 1393, 16:15 عصر
سلام دوستان من یه کلاس به شکل زیر به دارم



<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * */ class W3_Db { private $link; private $insert_id;
public function __construct() { $config = get_config(); $this->link = new mysqli($config['db']["hostname"],$config['db']["username"],$config['db']["password"],$config['db']["database"]);
if($this->link->connect_errno) trigger_error(mysqli_error($this->link)); $this->link->set_charset($config["db"]["char_set"]);
$this->insert_id = 0;
/* * load security class a create a object from it */
$classname = load_class("security"); $GLOBALS['security'] = new $classname; $GLOBALS['security']->setdb($this); }
public function get_insert_id() { return $this->insert_id; }
public function __destruct() { $this->link->close(); }
public function query($query) { $rsl = $this->link->query($query) or trigger_error(mysqli_error($this->link)."<br> query is: ".$query); $this->insert_id = mysqli_insert_id($this->link); return $rsl; }
public function get_connection() { return $this->link; } }
?>

بعد از عملیات insert مقدار insert ای دی را در کلاس ذخیره می کنم و بعد به وسیله تابعی د رکلاس آن را برمی گردانم. اما نمی دونم چرا mysqli_insert_id($this->link); همیشه مقدار خالی بر میگردونه؟!!!!!

arash691
دوشنبه 19 آبان 1393, 19:49 عصر
فیلد id شما auto_increment هستش ؟

hsgpro
دوشنبه 19 آبان 1393, 20:41 عصر
سلام

اولاً که طبق گفته آقا arash691 (http://barnamenevis.org/member.php?281367-arash691) باید ستون Auto Increment باشد دوماً من پیشنهاد میکنم از تابع LAST_INSERT_ID در خود MySQL استفاده کنید نه php.
یعنی مثل Query زیر:


INSERT INTO `test` (`id`, `test1`, `test2`) VALUES (LAST_INSERT_ID(id), 'hello', 'world');