эээ добавил, но там что то вообще страшное получилось Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\Newjourn\file.php on line 27 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\Newjourn\file.php on line 27 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\Newjourn\file.php on line 28 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\Newjourn\file.php on line 28 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\Newjourn\file.php on line 29 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\Newjourn\file.php on line 29 Fatal error: Call to a member function query() on a non-object in C:\WebServer\public\Newjourn\file.php on line 31
fatal error это как я понял PHP: <?php if ($result = $db->query($QUERY)) {?> Но какую надлежащую функцию нужно подставить? в версии предложенной igordata объявлялась переменная $db..
PHP: <?php if ($result = $db->query($QUERY)) { //создана запись о человеке echo "добавлен человечек {$_POST['name']} {$_POST['surname']} - {$_POST['post']}.<br>\n" } else { //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена. echo 'облом, чел!'; ?> } "echo 'облом, чел!'; ?>" заменить на "echo 'облом, чел!';" и добавить в самом конце уже эту ?> после всего-всего кода.
может для начала без PDO попробуете? Тут пробовать минут двадцать-тридцать. Все должно будет работать. PHP: <?php $db = new mysqli('127.0.0.1', 'login', 'password', 'DATABASE'); if (mysqli_connect_errno()) { //debug('Облом!'); printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error()); exit; } $QUERY = "INSERT INTO masters (`name`,`surname`,`post`) VALUES ('".mysql_real_escape_string($_POST['name'])."', '".mysql_real_escape_string($_POST['surname'])."', '".mysql_real_escape_string($_POST['post'])."')"; if ($result = $db->query($QUERY)) { //создана запись о человеке echo "добавлен человечек {$_POST['name']} {$_POST['surname']} - {$_POST['post']}.<br>\n"; } else { //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена. echo 'облом, чел!'; } ?> $db = new mysqli('127.0.0.1', 'login', 'password', 'DATABASE'); тут как вы понимате надо вставить то, что подходит под вашу задачу: логин, пароль, базу данных, если потребуется - изменит 127.0.0.1 на localhost например. У вас ЭТО заработало?
PHP: <?php ////////////////////////////////////////////////////////////////////////////// /// Инициализируем переменные. ВСЕ какие знаем, что будут и добавляем сюда // по мере появления новых. $name = ''; $surname = ''; $post = ''; //по-английски пост это еще почта и столб =) $result = false; //, ///, /инициализируем переменные ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// /// инициализируем подключение к базе данных // $db = new mysqli('127.0.0.1', 'login', 'password', 'DATABASE'); if (mysqli_connect_errno()) { //debug('Облом!'); printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error()); exit; } //, ///, /инициализируем подключение к базе данных ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// /// Обрабатываем присланные значения. Пользователю верить нельзя, поэтому - // буду резать буду бить =) if (isset($_POST['name'])) { $name = substr(trim($_POST['name']), 0, 255); } //255 символов должно хватить if (isset($_POST['surname'])) { $surname = substr(trim($_POST['surname']), 0, 255); } if (isset($_POST['post'])) { $post = substr(trim($_POST['post']), 0, 255); } //, ///, /обработка присланного всякого ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// /// если все хорошо - заносим в базу // if ($name != '' OR $surname != '') { //если нету фамилии или имени - не дадим внести в базу запись! =) $name = mysql_real_escape_string($name); $surname = mysql_real_escape_string($surname); $post = mysql_real_escape_string($post); $QUERY = "INSERT INTO masters (`name`, `surname`, `post`) VALUES ('$name','$surname','$post')"; if ($result = $db->query($QUERY)) { //создана запись о человеке echo "$name $surname добавлен на должность $post.<br>\n"; } else { //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена. echo 'облом, чел!<br>'; } } else { echo 'Пожалуйста, введите имя <b>и</b> фамилию жертвы.<br>'; } //, ///, /добавление записи в бд заканчивается тут ////////////////////////////////////////////////////////////////////////////// ?> <form method="post"> <input name="name"> <input name="surname"> <input name="postname"> <input type="submit"> </form>
Fatal error: Class 'mysqli' not found in C:\WebServer\public\f.php on line 18 к сожалению вот такая строчка выходит(((((
ну тут надо принять решение. установить это самое 'mysqli' или пользоваться другими методами. рекомендую для начала подключить. а дальше уже думать, надо ли =) но можно переписать на процедуры. я не люблю. поэтому не буду =)
В файле php.ini я его раскомментировал, и посмотрел что сам php_mysqli.dll подключен, нужно ли его еще где то подключать????
С mysqli разобрался - подключил.... Но блин. полезли другие ошибки... Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\f.php on line 50 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\f.php on line 50 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\f.php on line 51 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\f.php on line 51 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\f.php on line 52 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\f.php on line 52 Что с ним еще не так и в самом верху страницы кракозябры появились добавлен РЅР° должность .
проблема решилась когда убрал mysql_real_escape_string, данные записываются в таблицу, единственный момент, что если данные на русском - то в таблице кракозябрики, если на латинице - то норм. Что делать дальше?
Вот когда я эту функцию добавляю - появляется ошибка, которая описана выше. А без нее все работает нормально..
И столкнулся с еще одной проблемой, если работа с базой ведется только на 3 записи (Name,Surname and Post)-то все норм, а если добавить в базу еще несколько таблиц, и обозначить переменные (так же как в коде - все один в один) то выпадает ошибка добавления запис ("Облом,чел!")