Здравствуйте у меня другой вопрос , есть допустим обертка для PDO
тут все нормально , вызываем объект PDO в свойство класса. все ок.
с выборкой , удалением и обновлением записи все нормально , а вот добавление с опущеным AUTO_INCREMENT значением `uid` , ведет за собой дублированое добавление записи , тоесть 2 шт!!!! ![Не понял Не понял](./im/emoticons/blink.gif) , но если я явно укажу значение `uid` то дублирования не произойдет и ошибки не будет , уверен что в самом скрипте нигде нет дублирование запроса, т.к вызовы единичны.
заметил что добавление второй записи (дубля) происходит когда скрипт заканчивает свое выполнение.
отмечу что у меня такая проблема только с PDO ( PDO::exec($sql) && PDO::query($sql) ) с msql_query(); такого небыло.
может AUTO_INCREMENT что-то барахлит или конфигурация таблицы или самой БД(MyIsam) ведет за собой подобное явление.?
CODE ( php):
скопировать код в буфер обмена
$table = 'jms_test_users'; self::loadClass( 'xPDO' , $pdo ); $xpdo->Table_Insert_Row(array( 'table' => $table, 'uid' => null, 'name' =>'simple_name', 'family' =>'simple_family', 'telephone' =>'89-76-45', 'location' =>'New-Orlean', 'policy_group' =>'Members' ) )); $result = $xpdo->Table_Get_Collection(array( 'table' => $table )); echo xPDO::GetResultHtml($result);
код Table_Insert_Row( array $params=array() )
PHP:
скопировать код в буфер обмена
public function Table_Insert_Row (array $params = array() ){ throw new Exception('Не указаны главные параметры'); self::inputFilter( $params['table'] ); $sql = 'INSERT INTO '.$params['table'].' SET '.self::getKeyValueSql( $params['set'] ) . ';'; $data = $this->pdo->exec($sql); return $data; }
$this->pdo->exec($sql); всегда возвращает int(1) кол-во затронутых строк. тоесть все ок. и в то-же время труднее т.к отловить проблему счетчиком не удастся. счетчик проблему не на заметит , но вот записи то все-равно две! Дублируются , помогите разобраться.
(Добавление)
Нашел проблему, она заключается не в PDO а в .htaccess
были такие строки
CODE ( htmlphp):
скопировать код в буфер обмена
RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^.*$ index.php [L]
этот код генерил, повторную загрузку страницы.... тоесть нужно поправить код чтобы страница не генерерировалась дублем тем самым не дублировала сценарий на ней..
|