Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) 1 [2]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Запросы через MySQLi, тренировка
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




$stmt это взято из мануала. Вот пример про affected_rows из мануала
Объектно-ориентированный стиль
/* создание временной таблицы */
$mysqli->query("CREATE TEMPORARY TABLE myCountry LIKE Country");

$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";

/* подготовленное выражение */
if ($stmt = $mysqli->prepare($query)) {

/* привязка переменной к метке */
$code = 'A%';
$stmt->bind_param("s", $code);

/* выполнение выражения */
$stmt->execute();

printf("rows inserted: %d\n", $stmt->affected_rows);

/* закрытие подготовленного выражения */
$stmt->close();
}

/* закрытие соединения */
$mysqli->close();

Вот отсюда и взята эта $stmt
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15561
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 2 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


Да я про то, что в процедурном интерфейсе mysqli_stmt вообще не используется вне драйвера. Там используется только ссылка на объект, которая передается в процедурные функции. Собственно они являются обертками над объектным интерфейсом. Сделано это для обратной совместимости.

Ты взял мой класс, который ориентирован на процедурный интерфейс, и пытаешься извлечь из него объектный. Другими словами рвешь гланды через попу.

Если хочешь юзать prepare и иже с ними, выкинь его и не мучайся.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




Цитата
Ты взял мой класс, который ориентирован на процедурный интерфейс, и пытаешься извлечь из него объектный. Другими словами рвешь гланды через попу.

И что плохого в том что я буду использовать ваш класс для написания
запросов в Объектно-ориентированный стиле. Или же тогда что, используя ваш класс
лучше писать запросы в процедурном стиле?

То есть вместо
if (isset($_POST['editin'])) //Если нажата кнопка
{

$res = DB::Query("INSERT INTO `".$tabl."` (id, title, entitl, descrip, keywor)
SELECT `id`, `title`, `entitl`, `descrip`, `keywor` FROM `a_meta`
ON DUPLICATE KEY UPDATE `"
.$tabl."`.`id` = `a_meta`.`id`");

if (DB::$mysqli->affected_rows > 0)
{
echo 'Изменено '.DB::$mysqli->affected_rows.' записей';

} else {

echo 'Записи НЕ изменены';
}

DB::$mysqli->close();
}

Лучше написать вот так
if (isset($_POST['editin'])) //Если нажата кнопка
{

DB::Query("INSERT INTO `".$tabl."` (id, title, entitl, descrip, keywor)
SELECT `id`, `title`, `entitl`, `descrip`, `keywor` FROM `a_meta`
ON DUPLICATE KEY UPDATE `"
.$tabl."`.`id` = `a_meta`.`id`");

if (mysqli_stmt_affected_rows(DB::$mysqli) > 0)
{
echo 'Изменено '.mysqli_stmt_affected_rows(DB::$mysqli).' записей';

} else {

echo 'Записи НЕ изменены';
}

mysqli_close(DB::$mysqli);
}

Но когда я использую процедурный стиль
mysqli_stmt_affected_rows(DB::$mysqli);

то он его не видит. Версия PHP 5.3. Может то из за версии PHP.

Но когда я использую
DB::$mysqli->affected_rows

то он видит affected_rows
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




А вот врубился почему не видит affected_rows вот так
mysqli_stmt_affected_rows(DB::$mysqli);

Нужно использовать без stmt

Вот так видит affected_rows
mysqli_affected_rows(DB::$mysqli)


Получается что приставку stmt нужно использовать если юзаешь prepare.
Я правильно понял?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15561
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 2 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


Не стоит использовать оба интерфейса одновременно, каша получится. А вобщем все верно.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 23 дня
Карма: 7




Ну значит я правильно понял, что желательно использовать что то одно
или mysqli_query и то что подходит к нему
или mysqli_prepare и то что подходит к prepare.
Про подходит я имел в виду функции, то есть если используем mysqli_query
то к примеру функция num_rows будет выглядеть вот так mysqli_num_rows()
Ну а если использовать mysqli_prepare то функция num_rows будет
выглядеть вот так mysqli_stmt_num_rows()
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) 1 [2]  Ответ в темуСоздание новой темыСоздание опроса