Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109

Переход на mysqli

01.05.2016, 09:10. Показов 1834. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
При переходе на mysqli возникли проблемы с загрузкой данных на сервер,ошибок не каких нет, данные с базы выводятся но не загружаются, подскажите как код подправить.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Сообщение об ошибке:
error_reporting(E_ALL^E_NOTICE);
 
include "connect.php";
include "comment.class.php";
 
/*
/   Данный массив будет наполняться либо данными,
/   которые передаются в скрипт,
/   либо сообщениями об ошибке.
/*/
 
$arr = array();
$validates = Comment::validate($arr);
if($validates)
{
    /* Все в порядке, вставляем данные в базу: */
    
    mysqli_query("INSERT INTO comments(name,url,email,body)
                    VALUES (
                        '".$arr['name']."',
                        '".$arr['url']."',
                        '".$arr['email']."',
                        '".$arr['body']."'
                    )");
    
    $arr['dt'] = date('r',time());
    $arr['id'] = mysqli_insert_id();
    
    /*
    /   Данные в $arr подготовлены для запроса mysql,
    /   но нам нужно делать вывод на экран, поэтому 
    /   готовим все элементы в массиве:
    /*/
    
    $arr = array_map('stripslashes',$arr);
    
    $insertedComment = new Comment($arr);
 
    /* Вывод разметки только-что вставленного комментария: */
 
    echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
 
}
else
{
    /* Вывод сообщений об ошибке */
    echo '{"status":0,"errors":'.json_encode($arr).'}';
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2016, 09:10
Ответы с готовыми решениями:

Переход на mysqli
Здравствуйте, подскажите как исправить эту ошибку, хотя вроде mysqli поддерживается в версиях 5+? phpmyadmin: Информация о версии: 4.5.1,...

переход на mysqli
Здравствуйте, знаю что эта тема была, но не получается всё переделать на mysqli много переделал, но что то ему не нравится, помогите...

Переход с mysql на mysqli
Всем доброго времени суток! Помогите пожалуйста решить проблему перехода с mysql на mysqli Проект состоит из следующих файлов: ...

53
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
01.05.2016, 09:16
Для вывода mysqli ошибок используйте функцию mysqli_error (там же есть примеры использования). А mysqli_query первым параметром должна принимать ресурс соединения с БД.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 09:19  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
А mysqli_query первым параметром должна принимать ресурс соединения с БД.
Так?
PHP
1
2
3
4
5
6
7
mysqli_query($mysqli,"INSERT INTO comments(name,url,email,body)
                    VALUES (
                        '".$arr['name']."',
                        '".$arr['url']."',
                        '".$arr['email']."',
                        '".$arr['body']."'
                    )");
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
01.05.2016, 09:29
alex380, если вы подключаетесь функцией mysqli_connect и результат записываете в $mysqli, то да.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 09:32  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
если вы подключаетесь функцией mysqli_connect и результат записываете в $mysqli, то да.
Вот так я подключаюсь
PHP
1
2
3
4
5
6
7
include_once ('psl_config.php');   
 
$mysqli = new mysqli("", "", "", "");
if (mysqli_connect_errno()) {
    printf("Не удалось подключиться: %s\n", mysqli_connect_error());
    exit();
}
Вроде всё правильно сделал, но данные не добавляются.
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 09:46
Подключаетесь Вы правильно. надеюсь в строчке new mysqli("", "", "", ""); у вас забиты данные для подключения. А данные как добавляете?
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 09:52  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
А данные как добавляете?
Данные добавляются через форму
HTML5
1
2
3
4
5
6
<form id="addCommentForm" class="for" method="post" action="">
                                                <p><label for="name">Имя:</label><br><input type="text" name="name" id="name" /></p>
                                                <p><label for="email">Email:</label><br><input type="text" name="email" id="email" /></p> 
                                                <p><label for="body">Содержание отзыва:</label><br><textarea name="body" id="body" cols="40" rows="5"></textarea></p>
                                                <p><input class="mainBtn" type="submit" id="submit" value="Отправить" /></p> 
                                            </form>
Дальше попадают в
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
$(document).ready(function(){
    /* Следующий код выполняется только после загрузки DOM */
    
    /* Данный флаг предотвращает отправку нескольких комментариев: */
    var working = false;
    
    /* Ловим событие отправки формы: */
    $('#addCommentForm').submit(function(e){
 
        e.preventDefault();
        if(working) return false;
        
        working = true;
        $('#submit').val('Занято...');
        $('span.error').remove();
        
        /* Отправляем поля формы в submit.php: */
        $.post('comment/submit.php',$(this).serialize(),function(msg){
 
            working = false;
            $('#submit').val('Отправить');
            
            if(msg.status){
 
                /* 
                /   Если вставка была успешной, добавляем комментарий 
                /   ниже последнего на странице с эффектом slideDown
                /*/
 
                $(msg.html).hide().insertBefore('#addCommentContaine').slideDown();
                $('#body').val('');
            }
            else {
 
                /*
                /   Если есть ошибки, проходим циклом по объекту
                /   msg.errors и выводим их на страницу
                /*/
                
                $.each(msg.errors,function(k,v){
                    $('label[for='+k+']').append('<span class="error">'+v+'</span>');
                });
            }
        },'json');
 
    });
    
});
и потом в обработчик
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
include "connect.php";
include "comment.class.php";
 
/*
/   Данный массив будет наполняться либо данными,
/   которые передаются в скрипт,
/   либо сообщениями об ошибке.
/*/
 
$arr = array();
$validates = Comment::validate($arr);
if($validates)
{
    /* Все в порядке, вставляем данные в базу: */
    
    mysqli_query ($mysqli,"INSERT INTO comments(name,url,email,body)
                    VALUES (
                        '".$arr['name']."',
                        '".$arr['url']."',
                        '".$arr['email']."',
                        '".$arr['body']."'
                    )");
    
    $arr['dt'] = date('r',time());
    $arr['id'] = mysqli_insert_id();
    
    /*
    /   Данные в $arr подготовлены для запроса mysql,
    /   но нам нужно делать вывод на экран, поэтому 
    /   готовим все элементы в массиве:
    /*/
    
    $arr = array_map('stripslashes',$arr);
    
    $insertedComment = new Comment($arr);
 
    /* Вывод разметки только-что вставленного комментария: */
 
    echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
 
}
else
{
    /* Вывод сообщений об ошибке */
    echo '{"status":0,"errors":'.json_encode($arr).'}';
}
Добавлено через 1 минуту
Цитата Сообщение от php10 Посмотреть сообщение
надеюсь в строчке new mysqli("", "", "", ""); у вас забиты данные для подключения
С этим всё в порядке)
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 09:55
PHP
1
$arr = array();
вы пытаетесь вставить пустой массив.
Включите в PHP показ ошибок, мне кажется у вас там проблемы с индексами в массиве.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 10:06  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
вы пытаетесь вставить пустой массив.
Раньше так и работало.
Цитата Сообщение от php10 Посмотреть сообщение
Включите в PHP показ ошибок, мне кажется у вас там проблемы с индексами в массиве.
я только var_dump умею проверять, но в этом случае, что то не получается.
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 10:18
В самом начале скрипта напишите:
PHP
1
2
error_reporting(E_ALL);
ini_set('display_errors', 1);
Включит показ всех ошибок.

Ну тут явно видна ошибка в скрипте, вам нужно ее исправить.
Если у вас данные приходят через POST, то самое костыльное решение в мире (да простят меня):
PHP
1
$arr = $_POST;
Хотя тут нет мне прощения))

А вообще вам нужно сначала проверять, пришли ли данные на скрипт. А вы проверяете пустой массив, у вас функция validate тоже значит криво написана.
Должно быть что-то вроде:
PHP
1
2
3
4
5
if (Comment::validate($_POST) == true) {
    // добавляем в бд
} else {
   echo 'Черт возьми, где твой коммент?';
}
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
01.05.2016, 10:28
Цитата Сообщение от alex380 Посмотреть сообщение
но данные не добавляются.
Вы не обратили внимание на первую часть моего комментария:
Цитата Сообщение от Jodah Посмотреть сообщение
Для вывода mysqli ошибок используйте функцию mysqli_error (там же есть примеры использования).
Т.е. нечто вроде:
PHP
1
mysqli_query($mysqli,"тут ваш запрос") or die(mysqli_error($mysqli));
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 10:30
Да там явно PHP ошибка видна, да и валидация может не проходить. Попытка запихнуть пустой массив.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 10:36  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
В самом начале скрипта напишите:
У меня js не был подключен), в вы в js разбираетесь? а то тут другая проблема вылезла
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 10:37
Разбираюсь, но при чем тут JS? У вас же проблема при вставке. Для JS тут свой раздел на форуме есть.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 10:42  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
но при чем тут JS
У меня данные вот эту проверку не проходят
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
/* Данный флаг предотвращает отправку нескольких комментариев: */
    var working = false;
    
    /* Ловим событие отправки формы: */
    $('#addCommentForm').submit(function(e){
 
        e.preventDefault();
        if(working) return false;
        
        working = true;
        $('#submit').val('Занято...');
        $('span.error').remove();
Добавлено через 2 минуты
Цитата Сообщение от php10 Посмотреть сообщение
но при чем тут JS?
JS отправляет данные в php обработчик
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 10:44
Конечно не проходят)
у Вас var working = false;
и потом вы проверяете переменную на true вот тут:
JavaScript
1
if(working) return false;
у вас и происходит выход из функции. уберите эту строчку и вообще working
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 10:57  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
уберите эту строчку и вообще working
JS в таком виде оставил
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$(document).ready(function(){
 
        
        /* Отправляем поля формы в submit.php: */
        $.post('comment/submit.php',$(this).serialize(),function(msg){
 
            working = false;
            $('#submit').val('Отправить');
            
            if(msg.status){
 
                /* 
                /   Если вставка была успешной, добавляем комментарий 
                /   ниже последнего на странице с эффектом slideDown
                /*/
 
                $(msg.html).hide().insertBefore('#addCommentContaine').slideDown();
                $('#body').val('');
            }
            else {
 
                /*
                /   Если есть ошибки, проходим циклом по объекту
                /   msg.errors и выводим их на страницу
                /*/
                
                $.each(msg.errors,function(k,v){
                    $('label[for='+k+']').append('<span class="error">'+v+'</span>');
                });
            }
        },'json');
 
    });
    
});
Этот кусок удалил
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
/* Данный флаг предотвращает отправку нескольких комментариев: */
    var working = false;
    
    /* Ловим событие отправки формы: */
    $('#addCommentForm').submit(function(e){
 
        e.preventDefault();
        if(working) return false;
        
        working = true;
        $('#submit').val('Занято...');
        $('span.error').remove();
Я как понимаю он отвечал за спам?

Добавлено через 6 минут
php10, Как у вас со временем? Не желаете мой сайт за деньги доработать?
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 10:57
alex380, вам нужно срочно подучить JS + jQuery, так как нет понимания того, что происходит.

У вас первом коде, сразу же после загрузки скрипта происходит POST запрос. Если вы хотите отправить форму, на сервер, то вам в принципе не нужен Jquery.
Удалите его, оставьте только одну форму. Если же хотите через jquery делать, то должно быть примерно так:

JavaScript
1
2
3
$('#formId').submit({
    alert('Форма успешно отправлена на сервер');
});
Я не могу написать весь код, могу лишь подсказать, куда копать. А именно:
https://api.jquery.com/submit/

И почитайте про JS.
Я сейчас не на фрилансе, а на постоянной работе, так что со временем все плохо)
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.05.2016, 11:07
Цитата Сообщение от alex380 Посмотреть сообщение
PHP
1
$mysqli = new mysqli("", "", "", "");
Цитата Сообщение от php10 Посмотреть сообщение
Подключаетесь Вы правильно
Цитата Сообщение от alex380 Посмотреть сообщение
Так?
PHP
1
2
3
4
5
6
7
mysqli_query($mysqli,"INSERT INTO comments(name,url,email,body)
                    VALUES (
                        '".$arr['name']."',
                        '".$arr['url']."',
                        '".$arr['email']."',
                        '".$arr['body']."'
                    )");
Нет, не правильно! И нет не так! Если ООП, то ООП; если процедурный стиль, то процедурный стиль. У вас же помесь того и другого. В процедурном стиле, в котором вы отправляете запросы, подключение выглядит так
PHP
1
$mysqli = mysqli_connect("", "", "", "");
Даже несмотря на то, что ваш вариант рабочий, делать так не нужно. Как я уже написал выше, мешать разные стили как минимум не комильфо.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 11:10  [ТС]
php10, Да учить сейчас не когда, моя основная работа бурение скважин), а сейчас сезон. Сайт зимой делал, что успел подучил, да мало. Связался с какой то мутной конторой по доработке сайта, за две недели они мне второй тег h1 на сайт добавили)

Добавлено через 35 секунд
Подскажите где фрилансера найти?

Добавлено через 51 секунду
Kerry_Jr, А вы не желаете со мной за деньги поработать)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.05.2016, 11:10
Помогаю со студенческими работами здесь

Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in
Здравствуйте! Подскажите как решить проблему с выдаваемыми ошибками: Вот сам файл install.php &lt;?php //Подключение нужных...

Ошибка mysqli::query(): Couldn't fetch mysqli
Здравствуйте) Пытаюсь вывести в БД данные из html формы, максимально сократила код php, убрала все проверки, чтобы найти проблему....

Переход на MySQLi
В php вообще не шарю, может кто поможет перейти на mysqli, видел статьи в интернете, но без базовых знаний все равно трудно что-то сделать....

Ошибка подключения к БД: Warning: mysqli::mysqli() [mysqli.mysqli]: (28000/1045): Access denied for user
Есть магазин на OpenCart, необходимо сделать, чтобы при введении посетителем определенной инфы в форме эта инфа сохранялась в базе данных....

Warning: mysqli::mysqli() [mysqli.mysqli]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен
Денвер запущен, локалхост доступен, через cmd логинюсь в mysql.exe успешно. Вот что выводится на странице при попытке подключения к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru