[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обертка Mysqli
Страницы: 1, 2, 3, 4, 5, 6
Whiskas
Недавно начал изучать ООП, решил сделать простейший класс на добавление комментариев, но он не соединяется с бд.

$mysqli = new mysqli("----","----","","----");
if( $mysqli -> connect_errno) {
echo "Не удалось подключиться к MySQL: ". $mysqli -> connect_error;
}

class Comments {
public $resultat;
public function insertComment($query) {
global $mysqli;
$this -> resultat = $mysqli -> query($query);
return $this -> resultat;
}
}


$comment = new Comments();
$comment -> insertComment("INSERT INTO comment SET
'id' = '"
.$_POST['id']."',
'name' = '"
.$_POST['name']."',
'email' = '"
.$_POST['email']."',
'text' = '"
.$_POST['text']."'
"
);


Что неправильного здесь? То, что пробую через глобал? Или нужна какая-то обертка на соединение? Уже 2-ой день мучаюсь, без помощи не обойдусь.
Игорь_Vasinsky
global - зло

для коннекта подойдёт паттерн синглтон или статичный класс

insertComment - зачем передавать весь query (тем более там sql) - когда имя метода само за себя говорит? почему бы не предать массив с параметрами для sql ?

$_POST (или другой глобальный массив) в методах - это не камильфо

ты не обрабатываешь данные перед тем как суёшь их в БД - это опасно
для числовых типов - есть приведение к типу int, float и т.д. - для строк real_escape_string

$mysqli -> connect_error; - нужна тока тебе и то на время отладки, нафига выводить это посетителям? выводи им дежурное сообщение

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Whiskas
http://irbis-school.com/blog/full/11/perex...sql-na-mysqli/3 - вот такая вот обертка подойдет?

По остальному, вроде понял как сделать.

По защите, видел вот такой код в книжке:

function sanitazeString($var) {
$var = strip_tags($var);
$var = htmlentities($var);
$var = stripslashes($var);
return mysqli_real_escape_string($var);
}


Это нормальная функция?
Игорь_Vasinsky
нахер это всё
Цитата
$var = strip_tags($var);
$var = htmlentities($var);
$var = stripslashes($var);


вот это - то что надо

 mysqli_real_escape_string($var);


тока у тебя ооп

Цитата
http://irbis-school.com/blog/full/11/perex...sql-na-mysqli/3

половина твоих ошибок там есть.


а вообще - обёртка там и нафиг не нужна.


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Whiskas
Я просто уже запутался, никак не получается добавить эту запись. Может моя ошибка в том, что я внутри своего класса пишу ООП, а не процедурным стилем?

Вместо:
$this -> resultat = $mysqli -> query($query);


вот так:
$this -> resultat = mysqli_query($mysqli, $query);


Или это ни на что не влияет?
Игорь_Vasinsky
на время отладки - выводи свои косяки
$this -> resultat = $mysqli -> query($query) or die($mysqli ->error);


в работе - логируй, например

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Whiskas
or die($mysqli ->error);
user posted image

Спасибо, такая мелочь, а помогла выявить ошибку. Из-за кавычек гребанных)

$comment -> insertComment("INSERT INTO comment SET 
Вместо - 'id' = '"
.$_POST['id']."',
Вот така: id = '"
.$_POST['id']."',
"
);


Остается по остальному, как вы и сказали доделать и норм думаю будет.
twin
Странный народ. А чем то же or die лучше обертки?

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Whiskas
Я не говорил, что лучше или нет, просто помогло выявить ошибку. А вот обертку я в итоге хочу поставить, только надо будет поискать простенькую с ооп.

И еще вопросик: "$_POST (или другой глобальный массив) в методах - это не камильфо"

Тогда выходит надобно объявлять переменные? Или как-то по-другому?

И "nsertComment - зачем передавать весь query (тем более там sql) - когда имя метода само за себя говорит? почему бы не предать массив с параметрами для sql ?
"

Тута у меня небольшой ступор начался))
Игорь_Vasinsky
Цитата
Странный народ. А чем то же or die лучше обертки?


а много вообще общего у обертки класса для класса и функция остановки скрипта и вывода ошибки?

или тебя тупо зацепила ссылка на древнюю статью с global ?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Цитата
Тогда выходит надобно объявлять переменные? Или как-то по-другому?


))))


ну смотри как гуманно можно

class MyClass{
public function getDataForm(array $data){
// бла-бла-бла
}
}



$obj = new MyClass();
$obj->getDataForm($_POST);




и не важно в итоге какой на входе массив - POST, GET или пользовательский - нету жёсткой привязки у метода.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Whiskas
Благодарю, еще не дошел до такого:
public function getDataForm(array $data){}


Буду практиковаться)
Игорь_Vasinsky
ток это функции и аргументы))

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Whiskas
я уже понял)) Не думал, что в аргумент массив можно засунуть)))) Просто уже сколько изучаю, а нифига не понимаю, решил начать практиковаться сразу и с ООП создать блог. По мере увеличения функционала и сложности, надеюсь будут и знания расти)
Игорь_Vasinsky
Цитата
$comment -> insertComment("INSERT INTO comment SET
    Вместо - 'id' = '".$_POST['id']."',
                                Вот така: id = '".$_POST['id']."',
  ");


безопасно передавай данные в базу - я писал об этом

id же integer ?

тогда так

(int)$_POST['id']


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.