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

Переход на mysqli

01.05.2016, 09:10. Показов 2113. Ответов 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
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
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
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru