PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (7): « 1 2 3 4 [5] 6 7 »

> Найдено сообщений: 103
SkaN Отправлено: 25 Августа, 2011 - 15:08:22 • Тема: Свойством $mysqli класса сделан new mysqli(...); но в методах использовать нельзя • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1991
решено. Дело в том, что выполнялся только первый запрос. Путем долгого дебага было выяснено, что соединение закрывать не надо
SkaN Отправлено: 25 Августа, 2011 - 12:35:30 • Тема: Свойством $mysqli класса сделан new mysqli(...); но в методах использовать нельзя • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1991
ничего не происходит.
PHP:
скопировать код в буфер обмена
  1.     if($this->mysqli->connect_error){
  2.      echo $this->mysqli->connect_error;
  3.     }

так тоже
SkaN Отправлено: 25 Августа, 2011 - 10:13:33 • Тема: Свойством $mysqli класса сделан new mysqli(...); но в методах использовать нельзя • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1991
PHP:
скопировать код в буфер обмена
  1. private $mysqli;
  2.        
  3. function __construct($server, $login, $password, $database) {
  4.         $this->mysqli = new mysqli($server, $login, $password, $database);
  5. }
  6. //Куча всякого кода
  7. $this->mysqli->prepare(//Вполне нормльный запрос);
  8. //Еще куча кода

Вот такой вызов схватывает ошибку:
Warning: mysqli::prepare(): Couldn't fetch mysqli
уже попробовал и ($this->mysqli)->prepare(); и $mysqli = $this->mysqli внутри метода, но ничего не помогает. Только меняются иногда ошибки
SkaN Отправлено: 22 Августа, 2011 - 16:42:53 • Тема: Нужна помощь по jQuery.ajax() • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 1059
копировал ваш код без document.ready и вроде бы как заработало. сначала он мне показал ошибку в php коде, я ее исправил. Но в БД ничего не добавилось.
OOPS: работает. Там было несколько моих ошибок в PHP. Спасибо
SkaN Отправлено: 22 Августа, 2011 - 16:03:24 • Тема: Нужна помощь по jQuery.ajax() • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 1059
все не могу найти в инете нормального мана по аяксу. Чтобы в нем были собраны скрипты и на клиентской части, и на серверной. Я наваял такой "код":
CODE (javascript):
скопировать код в буфер обмена
  1. $.(document).ready(function() {
  2.         function send() {
  3.                 var name = $.("#name").val();
  4.                 var text = $.("#text").val();
  5.                 $.ajax(
  6.                         url: "submit.php",
  7.                         type: "POST",
  8.                         data: "name: "+name+", text: "+text,
  9.                         success: function(html) {
  10.                                 $.("#responce").text(html);
  11.                         };
  12.                 );
  13.         };
  14. })

Форма:
CODE (html):
скопировать код в буфер обмена
  1. <input type="text" name="name" id="name"><br>
  2. <input type="text" name="text" id="text"><br>
  3. <input type="button" value="Отправить" onClick="send()">

Обработчик (submit.php):
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $name = $_POST['name'];
  3. $text = $_POST['text'];
  4. include "includes/mysql.php";
  5. $mysqli = new SMySQL;
  6. $mysqli->insertData('messages', "3, $name, $text");
  7. $messages = $mysqli->selectEntries('messages');
  8. for ($i=0; $i<count($messages); $i++) {
  9.         ?>
  10.         <h1><?=$messages[$i]['name'] ?></h1>
  11.         <p><?=$messages[$i]['text'] ?></p>
  12.         <?PHP
  13. }
  14. ?>

Я более чем уверен, что что-то пропустил. Потому что имею мало представления о том, как сервером возвращать данные и как у клиента обрабатывать полученные данные. Помогите, чем можете, пожалуйста...
SkaN Отправлено: 14 Августа, 2011 - 11:46:54 • Тема: mysqli::prepare() возвращает FALSE, не могу найти причину • Форум: Работа с СУБД

Ответов: 3
Просмотров: 1361
PHP:
скопировать код в буфер обмена
  1. $mysqli = new mysqli('localhost', 'root', 'password', 'database');

(Добавление)
извините меня, идиота... Количество столбцов в таблице 5, а я пытался внести туда 4 значения. Странно, конечно, что $mysqli->error на это не ругался, но все-таки...
SkaN Отправлено: 14 Августа, 2011 - 11:29:44 • Тема: mysqli::prepare() возвращает FALSE, не могу найти причину • Форум: Работа с СУБД

Ответов: 3
Просмотров: 1361
Никаких видимых причин для ошибки нету, подготавливается такой запрос:
PHP:
скопировать код в буфер обмена
  1. $stmt = $mysqli->prepare("INSERT INTO `articles` VALUES (?, ?, ?, ?)");

но $stmt == FALSE. $mysqli->error ничего не пишет.
SkaN Отправлено: 12 Августа, 2011 - 13:59:50 • Тема: stmt отказывается работать с longtext в mysql • Форум: Работа с СУБД

Ответов: 1
Просмотров: 1141
PHP:
скопировать код в буфер обмена
  1. $stmt->execute();
  2. $stmt->bind_result($id, $name, $promo, $article, $commenting);
  3. $stmt->fetch();
  4. $array = array($id, $name, $promo, $article, $commenting);
  5. foreach ($array as $k=>$v) {
  6.         echo $k.' => '.$v."<br>";
  7. }

Пишет:
Цитата:
0 => lorem_ipsum
1 => Lorem ipsum
2 =>
3 =>
4 => 1

Вот $promo и $article в БД хранятся под типами longtext, только с ними $stmt отказывается работать. Как его заставить?
И раз уж я здесь, то задам еще вопрос: как посчитать количество столбцов, которые достались execute'у?
(Добавление)
Нагуглил в официальной документации: чтобы передвались longtext'ы, нужно перед $stmt->bind_result() вызвать $stmt->store_result. У меня сработало.
Но второй вопрос - как посчитать количество столбцов - все еще в силе.
(Добавление)
$stmt->field_count
почему-то этого нету в документации. Нашлось методом ошибок, когда xdebug мне выдал все доступные переменные, в том числе классы)
SkaN Отправлено: 10 Августа, 2011 - 10:47:07 • Тема: Нужно передать в $stmt->bind_param массив. Просто массив не берется • Форум: Работа с СУБД

Ответов: 11
Просмотров: 9045
все, решено. В официальных доках по этому методу среди комментов есть такая функция:
PHP:
скопировать код в буфер обмена
  1. function refValues($arr){
  2.         if (strnatcmp(phpversion(),'5.3') >= 0) { //Если версия PHP >=5.3 (в младших версиях все проще)
  3.                 $refs = array();
  4.                 foreach($arr as $key => $value) {
  5.                         $refs[$key] = &$arr[$key]; //Массиву $refs присваиваются ссылки на значения массива $arr
  6.                 }
  7.                 return $refs; //Массиву $arr присваиваются значения массива $refs
  8.         }
  9.         return $arr; //Возвращается массив $arr
  10. }

Соответственно $stmt->bing_param вызывается так:
PHP:
скопировать код в буфер обмена
  1. call_user_func_array(array($stmt, 'bind_param'), refValues($array_with_params));
SkaN Отправлено: 09 Августа, 2011 - 14:53:37 • Тема: Нужно передать в $stmt->bind_param массив. Просто массив не берется • Форум: Работа с СУБД

Ответов: 11
Просмотров: 9045
string(2) "ss"
SkaN Отправлено: 09 Августа, 2011 - 14:19:54 • Тема: Нужно передать в $stmt->bind_param массив. Просто массив не берется • Форум: Работа с СУБД

Ответов: 11
Просмотров: 9045
все равно та же ошибка
SkaN Отправлено: 09 Августа, 2011 - 14:16:44 • Тема: Нужно передать в $stmt->bind_param массив. Просто массив не берется • Форум: Работа с СУБД

Ответов: 11
Просмотров: 9045
плохо... А есть какие-нибудь предложения, как эту вещь можно реализовать?
SkaN Отправлено: 09 Августа, 2011 - 14:08:35 • Тема: Нужно передать в $stmt->bind_param массив. Просто массив не берется • Форум: Работа с СУБД

Ответов: 11
Просмотров: 9045
Array (
0=>'ss',
'id'=>'lorem_ipsum',
'name'=>'Lorem Ipsum'
)
SkaN Отправлено: 09 Августа, 2011 - 13:14:52 • Тема: Нужно передать в $stmt->bind_param массив. Просто массив не берется • Форум: Работа с СУБД

Ответов: 11
Просмотров: 9045
Есть массив со значениями, допутим их два: ('id'=>'lorem_ipsum', 'name'=>'Lorem Ipsum'). Значения нужно загнать в $stmt->bind_param. Я написал так:
PHP:
скопировать код в буфер обмена
  1. $stmt = $mysqli->prepare(SELECT * FROM `articles` WHERE `id` = ? AND `name` = ?);
  2. $types = "";
  3. foreach ($parsed_array as $k=>$v) {
  4.         if (is_int($v) == TRUE) $types .= "i";
  5.         elseif(is_float($v) == TRUE) $types .= "d";
  6.         else $types .= "s";
  7. }
  8. $stmt->bind_param($types, $parsed_array);
  9. $stmt->execute();

И дебаггер мне возвращает:
Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables
что в принципе логично. Но необходимость использовать массив не отпадает. Как..? Растерялся
(Добавление)
попробовал так:
PHP:
скопировать код в буфер обмена
  1. call_user_func_array($stmt->bind_param(), $parsed_array);
  2. $stmt->execute();

но мне вернулось
Warning: Wrong parameter count for mysqli_stmt::bind_param()
(Добавление)
Попробовал добавить в начало $parsed_array типы переменных массива ("ss"), но все равно та же ошибка.
SkaN Отправлено: 31 Июля, 2011 - 11:28:34 • Тема: Запрос к БД есть, результат есть, mysql_fetch_assoc возвращает FALSE • Форум: Если скрипт не работает

Ответов: 3
Просмотров: 2612
kochan10 пишет:
По мелочи посоветую mysql_num_rows($query) предварительно сохранить в переменной

PHP:
скопировать код в буфер обмена
  1. $query = commentsQueries::getComments($article, $comments_page);
  2. $numrows = mysql_num_rows($query);
  3. if ($query != 'null') {
  4.         for ($i=0; $i<$numrows; $i++) {
  5.                 $comments_array = mysql_fetch_assoc($query);
  6.                 include 'styles/template/comment.php';
  7.         }
  8. }

результат тот же
kochan10 пишет:
А в случае, когда записей не одна, mysql_num_rows($query) возвращает точное количество записей?

да, выводит цифру 2
(Добавление)
метод, которым я данные запрашиваю, возвращает таким образом:
PHP:
скопировать код в буфер обмена
  1. if (mysql_fetch_assoc($query) != FALSE) return $query;
  2. else return 'null';

сейчас сообразил, что это может одну запись себе забирать. Если мне напишете, что возвращает MySQL, когда ни на что не натыкается, буду благодарен... А то я и NULL пробовал подставлять ($query != NULL) и FALSE, но они не подходят
(Добавление)
Растерялся
PHP:
скопировать код в буфер обмена
  1. if ($query) return $query;
  2. else return 'null';

теперь все норм...
(Добавление)
SkaN пишет:
Если мне напишете, что возвращает MySQL, когда ни на что не натыкается, буду благодарен... А то я и NULL пробовал подставлять ($query != NULL) и FALSE, но они не подходят

вот это все еще активно, а то не получается у меня вернуть 'null', а надо

Страниц (7): « 1 2 3 4 [5] 6 7 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB