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

Переход на mysqli

01.05.2016, 09:10. Показов 1882. Ответов 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
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 11:10
Студворк — интернет-сервис помощи студентам
Kerry_Jr,
Если уж на то пошло, пусть использует человек DAO, AR, Yii2/Laravel/Symfony. Angular вместо jQuery, что уж там мелочиться. PDO в конце концов.

Тут проблема не в подключении, а в том, что из-за диких условий, пустых массивов и так далее, код даже криво работать не будет. На подключение можно опустить глаза уже.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.05.2016, 11:19
Цитата Сообщение от alex380 Посмотреть сообщение
Подскажите где фрилансера найти?
В соответствующем разделе
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 11:59  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
В соответствующем разделе
Нет желающих(. Предаётся самому писать с вашей помощью)

Добавлено через 10 минут
Kerry_Jr, Что исправить в коде?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
//Функция добавления инфы в таблицу
function send_img($name, $type, $text)
{
    $sql =  " INSERT INTO img " . 
            " (name, type, text) " . 
            " VALUES " . 
            " ('$name', '$type', '$text') ";
    $result = mysqli_query($mysqli, $sql);
    
    if (!$result)
    die (mysqli_error());
}
ошибки
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\moisaittest.loc\ad min\function.php on line 74

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\OpenServer\domains\moisaittest.loc\ad min\function.php on line 77
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.05.2016, 12:39
alex380, либо передать параметром $mysqli, либо внутри функции объявить $mysqli как global. Но первый вариант, ИМХО, предпочтительнее.

Добавлено через 42 секунды
Цитата Сообщение от alex380 Посмотреть сообщение
PHP
1
die (mysqli_error());
PHP
1
die (mysqli_error($mysqli));
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 12:41  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
либо передать параметром $mysqli
Я этот параметр не как правильно прописать не могу, синтаксические ошибки получаются.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
01.05.2016, 12:41
Цитата Сообщение от alex380 Посмотреть сообщение
mysqli_query() expects parameter 1 to be mysqli, null given
mysqli ожидает 1-ым параметром ресурс mysqli, а передаётся пустота. Видимо $mysqli не объявлена ранее.

Цитата Сообщение от alex380 Посмотреть сообщение
mysqli_error() expects exactly 1 parameter, 0 given
mysqli_error ожидает 1-ым параметром ресурс mysqli, вы ничего не передали.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 12:43  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
die (mysqli_error($mysqli));
Не помогло
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.05.2016, 12:45
Цитата Сообщение от alex380 Посмотреть сообщение
Я этот параметр не как правильно прописать не могу, синтаксические ошибки получаются.
Нужно в месте вызова функции его передавать.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//объявление
function send_img($mysqli, $name, $type, $text)
{
    $sql =  " INSERT INTO img " . 
            " (name, type, text) " . 
            " VALUES " . 
            " ('$name', '$type', '$text') ";
    $result = mysqli_query($mysqli, $sql);
    
    if (!$result)
    die (mysqli_error());
}
. . . .
// вызов
send_img($mysqli, $name, $type, $text);
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 12:51  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
// вызов
send_img($mysqli, $name, $type, $text);
А если вызов в ну три другой функции происходит, работать будет?
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 12:54
alex380, если в той другой функции $mysqli будет доступен.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 12:58  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
если в той другой функции $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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
include ("../comment/connect.php");
 
function file_inspection($file)
{
//Проверка типа файла при загрузке file inspection    
$filename=$_FILES['fupload']['name'];
$filetype=$_FILES['fupload']['type'];
 $filename = strtolower($filename); //strtolower — Преобразует строку в нижний регистр
 $filetype = strtolower($filetype);
 
 //проверьте, содержит PHP и убить его
 $pos = strpos($filename,'php');
 if(!($pos === false)) {
  return false;
 }
 
 //Проверить не пустой ли файл
if ($file['name'] == '')
    {
        return false;
    }
    
 //проверить расширение    
$file_ext = strrchr($filename, '.'); //strrchr — Находит последнее вхождение символа в строке
 $whitelist = array(".jpg",".jpeg",".gif",".png"); 
 if (!(in_array($file_ext, $whitelist))) 
 {
    return false;
 }
     
 //проверить тип загрузки
 $pos = strpos($filetype,'image');
 if($pos === false) {
  return false;
 }
 $imageinfo = getimagesize($_FILES['fupload']['tmp_name']); //getimagesize — Получение размера изображения
 if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime']      != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
   return false;
 }
 
//проверить двойной тип файла (изображение с комментариями)
if(substr_count($filetype, '/')>1){
return false;
}
    
// Перенаправление дирректории
$uploaddir = '../images/img/';
    if (!file_exists($uploaddir))    //file_exists — Проверяет наличие указанного файла или каталога
    {
        mkdir( $uploaddir, 0777); //mkdir — Создаёт директорию               
    } 
   
//изменить имя изображения
$uploadfile = $uploaddir . md5(basename($_FILES['fupload']['name'])).$file_ext;
  if (move_uploaded_file($_FILES['fupload']['tmp_name'], $uploadfile)) //move_uploaded_file — Перемещает загруженный файл в новое место  
  {
  } 
  else 
  {
    return false;
  }
//отправляем данные в БД
send_img (new mysqli("", "", "", ""), $file ['name'], $file ['type'], $_POST['text']);  
}
//Функция добавления инфы в таблицу
function send_img($mysqli, $name, $type, $text)
{
    $sql =  " INSERT INTO img " . 
            " (name, type, text) " . 
            " VALUES " . 
            " ('$name', '$type', '$text') ";
    $result = mysqli_query($mysqli, $sql);
    
    if (!$result)
    die (mysqli_error($mysqli));
}
 
//Функция выбора инфы из таблицы
function get_img ()
{
    $sgl = "SELECT * FROM img";
    $result = mysqli_query($sgl);
    
    if (!$result)
        die (mysqli_error());
    $n = mysql_num_rows($result);
    $arr = array ();
    
    for ($i = 0; $i < $n; $i++)
    {
        $row = mysql_fetch_assoc($result);
        $arr[] = $row;
    }
    return $arr;    
}
Добавлено через 1 минуту
Цитата Сообщение от alex380 Посмотреть сообщение
send_img (new mysqli("", "", "", ""), $file ['name'], $file ['type'], $_POST['text']);
на 63 строке вызов функции, как это всё красиво оформить?
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 13:01
PHP
1
include ("../comment/connect.php");
я бы там написал $mysqli = mysqli_conn***

тогда в вашем файле $mysqli станет глобальным.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 13:15  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
include ("../comment/connect.php");
я бы там написал $mysqli = mysqli_conn***
тогда в вашем файле $mysqli станет глобальным.
Пойду покурю и пробовать буду, а то уже мозги закипают)

Добавлено через 9 минут
Цитата Сообщение от php10 Посмотреть сообщение
include ("../comment/connect.php");
я бы там написал $mysqli = mysqli_conn***
у меня там так и прописано
PHP
1
2
3
4
5
$mysqli = new mysqli("", "", "", "");
if (mysqli_connect_errno()) {
    printf("Не удалось подключиться: %s\n", mysqli_connect_error());
    exit();
}
Нужно как то $mysqli в функцию загнать

Добавлено через 2 минуты
php10, я
PHP
1
include ("../comment/connect.php");
в ну три функции подключил, не знаю правильно ли это)
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 13:25
Упс, я вас обманул. Переменная в функции не будет видна.
Вам нужно ее передать как параметр:
PHP
1
2
3
4
5
require ("connection.php");
function query($mysqliConnectionLink) {
    ///
}
query($mysqli);
У вас должна быть вот такая функция:
PHP
1
send_img ($mysqli, $file ['name'], $file ['type'], $_POST['text']);
Т.е. у вас mysqli определена в connection, осталось ее как параметр передать в функции.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 13:36  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
file_inspection($mysqli, $file)
send_img ($mysqli, $file ['name'], $file ['type'], $_POST['text']);
С этим более менее понятно, только записать нужно так
PHP
1
file_inspection( $file, $mysqli,)
, а то ошибка вылазет Illegal string offset 'name' in.
А это, что? Ещё одну функцию писать?
PHP
1
2
3
4
function query($mysqliConnectionLink) {
    ///
}
query($mysqli);
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
01.05.2016, 13:37
Это я для примера показал, как передавать данные)
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 15:24  [ТС]
Цитата Сообщение от php10 Посмотреть сообщение
Т.е. у вас mysqli определена в connection, осталось ее как параметр передать в функции.
Не могу я её в функцию запихать, можете подробнее процесс описать.

Добавлено через 6 минут
php10, Вот так ведь должна передаться?
PHP
1
2
3
4
5
6
7
8
9
10
include("function.php");
include ("../comment/connect.php");
//Точка входа
if (isset($_FILES['fupload'], $_POST['text']))
{
    file_inspection($mysqli, $_FILES['fupload'], $_POST['text']);   
        header ('location: ../foto.php');
        exit(); 
 
}
Добавлено через 1 час 26 минут
php10, Не будете мне больше помогать?)

Добавлено через 8 минут
php10, Разобрался. У меня в функцию передавалось три параметра
PHP
1
file_inspection($_FILES['fupload'], $_POST['text'], $mysqli);
А принималось два)
PHP
1
function file_inspection($file, $mysqli)
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.05.2016, 16:22
alex380, сейчас просто совет: если у вас функция вызывается из функции, которая в свою очередь может вызываться из другой функции, и в одной из этих функций будут использоваться функции БД, то для удобства, чтобы переменную с подключением постоянно не передавать параметром, лучше внутри функции объявить переменную подключения глобальной. Я не любитель ключевого слова global, но в некоторых ситуациях можно и отступиться от принципов .
1
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.05.2016, 16:25  [ТС]
Kerry_Jr,
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
лучше внутри функции объявить переменную подключения глобальной
Можете в примере показать?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
01.05.2016, 16:31
Цитата Сообщение от alex380 Посмотреть сообщение
Можете в примере показать?
Например,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
function send_img($name, $type, $text)
{
    global $mysqli;
    $sql =  " INSERT INTO img " . 
            " (name, type, text) " . 
            " VALUES " . 
            " ('$name', '$type', '$text') ";
    $result = mysqli_query($mysqli, $sql);
    
    if (!$result)
    die (mysqli_error($mysqli));
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.05.2016, 16:31
Помогаю со студенческими работами здесь

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 успешно. Вот что выводится на странице при попытке подключения к...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru