Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Где может быть ошибка?
 
 автор: Belkin   (26.08.2011 в 17:27)   письмо автору
 
 

Не хочет отправлять данные в БД.

Вот index.php :


<?php
include 'style.php';
include 
'db.php';
echo 
'
<p>ГОСТЕВАЯ КНИГА</p>
<table>
    <tr>
        <td>ID</td>
        <td>Имя</td>
        <td>E-mail</td>
        <td>Сообщение</td>
    </tr>
'
;
$res mysql_query("SELECT * FROM `ibelik_book");
while(
$row mysql_fetch_assoc($res)){
echo 
'
    <tr>
        <td>'
.$row['id'].'</td>
        <td>'
.$row['user'].'</td>
        <td>'
.$row['mail'].'</td>
        <td>'
.$row['message'].'</td>
    </tr>
</table>
'
;
}
?>
<form action="add.php" method="post">
    Введите свое имя<br />
    <input type="text" name="user_book"/><br />
    Введите свое email<br />
    <input type="text" name="email_book"/><br />
    Введите свое сообщение<br />
    <textarea name="msg_book"></textarea><br />
    <input type="submit" name="submit_book" value="Добавить"/>
</form>


Вот обработчик add.php


<?php
include 'style.php';
include 
'db.php';
if (
$_POST['submit_book']) {
    
$user_book $_POST['user_book'];
    
$email_book $_POST['email_book'];
    
$msg_book $_POST['msg_book'];   
    
trim($error '');
    if (empty(
$user_book)) {$error .= '<p>Введите свое имя</p>';}
    if (empty(
$email_book)) {$error .= '<p>Введите свой email</p>';}
    if (empty(
$msg_book)) {$error .= '<p>Введите свое сообщение</p>';}
    if (empty(
$error)) {
        
$query "INSERT INTO ibelik_book (user, mail, message) VALUES $user_book$email_book$msg_book";
        
mysql_query($query);
        echo 
'Добавлено!';
    }else{
        echo 
$error;
        exit;
    }
}
?>

  Ответить  
 
 автор: psychomc   (26.08.2011 в 17:29)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:27)
 

а если в add.php исправить

<?php
       
// ...
        
if (mysql_query($query)) {
        echo 
'Добавлено!'
       } else echo 
"Не добавлено";
       
// ...
?>

что выводит?

  Ответить  
 
 автор: Belkin   (26.08.2011 в 17:31)   письмо автору
 
   для: psychomc   (26.08.2011 в 17:29)
 

Не добавлено. Сейчас попробую найти выше ошибку.

  Ответить  
 
 автор: psychomc   (26.08.2011 в 17:35)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:31)
 

echo mysql_error();

  Ответить  
 
 автор: psychomc   (26.08.2011 в 17:36)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:31)
 

кстати вот это уберите, это бред

trim($error = '');

замените на просто $error = '';

  Ответить  
 
 автор: Belkin   (26.08.2011 в 17:38)   письмо автору
 
   для: psychomc   (26.08.2011 в 17:36)
 

убрал :)

я просто думал, что будет полезно, если будет очищать сразу пробелы.

А вот сам еррор:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ssss, sssssssssssssss, sssssssss' at line 1

  Ответить  
 
 автор: Lotanaen   (26.08.2011 в 17:42)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:38)
 


$query = "INSERT INTO ibelik_book (`user`, `mail`, `message`) VALUES '$user_book', '$email_book', '$msg_book'";

вот так исправьте

  Ответить  
 
 автор: Lotanaen   (26.08.2011 в 17:40)   письмо автору
 
   для: psychomc   (26.08.2011 в 17:36)
 

а еще лучше на unset($error);

  Ответить  
 
 автор: psychomc   (26.08.2011 в 17:42)   письмо автору
 
   для: Lotanaen   (26.08.2011 в 17:40)
 

тогда будет notice

  Ответить  
 
 автор: Lotanaen   (26.08.2011 в 17:44)   письмо автору
 
   для: psychomc   (26.08.2011 в 17:42)
 

да, ошибка в отсутствии одинарных кавычек в запросе

  Ответить  
 
 автор: Belkin   (26.08.2011 в 17:44)   письмо автору
 
   для: psychomc   (26.08.2011 в 17:42)
 

Снова:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dddd', 'ddddd', 'ddddd'' at line 1

  Ответить  
 
 автор: Lotanaen   (26.08.2011 в 17:45)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:44)
 

сорри, еще же переменные в круглые скобки взять же нужно )))
вот так


$query = "INSERT INTO ibelik_book (`user`, `mail`, `message`) VALUES ('$user_book', '$email_book', '$msg_book')";

  Ответить  
 
 автор: Belkin   (26.08.2011 в 17:47)   письмо автору
 
   для: Lotanaen   (26.08.2011 в 17:45)
 

Вот:

CREATE TABLE IF NOT EXISTS `ibelik_book` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`user` varchar(50) NOT NULL,
`mail` varchar(50) NOT NULL,
`message` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

  Ответить  
 
 автор: Belkin   (26.08.2011 в 17:49)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:47)
 

Теперь работает, спасибо всем)

а на счет $error, то лучше использовать так -
unset($error);
, верно?

  Ответить  
 
 автор: Lotanaen   (26.08.2011 в 17:50)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:49)
 

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

  Ответить  
 
 автор: psychomc   (26.08.2011 в 17:58)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:49)
 

нет. это глупо.

и еще было бы неплохо сделать экранирование перед занесением в базу данных.

  Ответить  
 
 автор: Belkin   (26.08.2011 в 17:59)   письмо автору
 
   для: psychomc   (26.08.2011 в 17:58)
 

Простите, а можно подробней немного?

  Ответить  
 
 автор: psychomc   (26.08.2011 в 18:26)   письмо автору
 
   для: Belkin   (26.08.2011 в 17:59)
 

почитайте о функции mysql_real_escape_string

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования