Доброго дня всем ) Уже 3ий день мучают несколько вопросов, в гугле лекарства нашел, но чую должно быть более оптимальное решение...
Решил перейти с MySQL на использование MySQLi и сразу же столкнулся с проблемой при написании своего первого класса с использованием MySQLi. Вот пример:
function addArticle($title,$content,$date,$author){
$this->mysqli->query("INSERT INTO articles(title, content, date, author) VALUES('$title','$content','$date','$author')")or die($this->mysqli->error);
}
function __destruct (){
$this->mysqli->close();
echo"Соединение с БД закрыто";
}
}
$obj=new baseCMS();
?>
А что если объектов будет больше? Каждый раз будет открываться и закрываться соединение... А нужно что бы было одно для всех, как например в MySQL создали 1 файл и инклюдим его повсюду где надо... Видел примеры в гугле с использованием сингл тона, но как то "грязно" выглядит на мой взгляд.
Получается нужно создать отдельный класс для соединения с БД? Если да, то какой от него толк? Выходит что опять же лишняя писанина... Проще в каждом методе просто открыть и закрыть соединение... Не могу разобраться, помогите пожалуйста
И ещё заметил что начало глючить $mysqli->real_escape_string. При выводе с echo спецсимволы экранируется, а вот в БД опять же уходит без экранирования... Читал что проблема из за кодировки, пробовал с разными, результат один и тот же...
netclan
trim() удаляет пробелы с начала и с конца строки, типа пробел1пробел2 ИМЯ пробел3. Результат будет "ИМЯ", без пробелов. Если хотите уничножить все кроме букв, то используйте подобное выражение
if(!preg_match("/^[a-zA-Zа-яА-Я]+$/",$name)){echo"Имя может содержать только Русские или Английские буквы<br>";}
Ну или не эхо, можно поместить ошибку в какую нибудь переменную и проверять ее на isset...
П.С: в квадратных скобках у preg_match в данном случае находятся только разрешенные символы для ввода. Соответственно можете добавлять свои по мере необходимости
rexstorz
Тогда укажите в основном вам файле путь к тому файлу, где лежит капча(что бы появилась картинка) и сверяйте в первом файле то, что ввел пользователь с тем, что лежит в сессии, где генерируется код капчи.
Доброй ночи ) искал с помощью поиска по форуму, но не нашел именно то, что мне нужно... Ранее не занимался объединением таблиц БД при помощи JOIN, интересует несколько вопросов, если кто знает, подскажите, пожалуйста )
$mysqli->query("SELECT item, price FROM items, prices");
Это одно и тоже что и если использовать JOIN? Если да, то чем первый отличается от JOIN-а? Ещё видел LEFT JOIN, RIGHT JOIN и т.д - в каких случаях и как срабатывает запрос? ) ещё видел ключевое слово ON... Т.е с JOIN не работал вообще... Не знаю точно как составлять такие запросы, последовательность написания операторов, полей и т.д
Тоесть получается так, соединяемся с БД, а если соединение не удалось, то "смерть"(перевод слова die) и выводим стандартную ошибку mysql. Тоесть вам уже напишет например, unknown database и вы уже поймете в чем дело. А если ошибок нет никаких, то значит все прошло успешно.
условие и var_dump здесь неуместено, думаю.. проще и удобнее как я написал выше.
DelphinPRO
Точно, прочитал уже в вики ) пару месяцев назад столкнулся и забыл... не вникал особо, просто на тот момент изучал Soap(поэтому спутал с XML) и походу столкнулся с шаблонами проектирования, в итоге запутался и забил на то и на другое, временно, естественно ) Точнее с Soap разобрался, но вот создавать wsdl Документы не очень...
caballero
Меня наоборот устраивает одно соединение, но только в примерах видел что постоянно открывают и закрывают... Поэтому пришел на форум за уточнением )
DelphinPRO
синглтон - я думал это связано с XML либо с фреймворками.. я где то сталкивался с ним, но точно где - забыл ) единственное что запомнил - только название )) Но точно помню что встречал его либо в XML либо в фреймворках..
Ну раз более опытные советуют забить на устаревшее, тогда пойду читать функции mysqli из мануала )
esterio
Странно, если у нас все основано на классах либо функциях, то вроде как нужно ведь в теле функции/метода постоянно открывать и закрывать соединение? Видел несколько примеров по использованию mysqli и там все было именно так...