Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Ошибка в запросе


Автор: NZero 23.5.2013, 23:36
Только начинаю изучать php! Вот мой нехитрый скрипт:

Код

<?php
$server="localhost";
$user="pbezpal";
$db="test";
$pas="123";
mysql_connect($server,$user,$pas) or die("MySql сервер недоступен".mysql_error());
mysql_select_db($db) or die("Нет соединения с БД".mysql_error());
$out="select * from gbook";
$rez=mysql_query($out);
?>
<html>
<head>
<title>Гостевая книга</title>
</head>
<?php
if(mysql_num_rows($rez) == 0)
{
    echo "Пока нет ни одной записи! Станьте первым)";
}
else
{
    for($i=0; $i<mysql_num_rows($rez); $i++)
    {
        $book=mysql_fetch_row($rez);
        echo $book;   
    }       
}
?>
<form method="post" name="add_gbook">
<input type="text" size="50" name="name" value=""/>
<br />
<input type="text" size="20" name="city" value="Москва"/>
<br />
<textarea name="comment" cols="50" rows="10"></textarea>
<br />
<input type="submit" name="sub_add" value="Добавить"/>
</form>
<?php
if(isset($_POST['sub_add']))
{
    $name=$_POST['name'];
    $date=date('Y-m-d');
    $city=$_POST['city'];
    $text=$_POST['comment'];
    $add='insert into gbook (name, date, city, text) values ($name, $date, $city, $text)';
    mysql_query($add);    
}
?>
</html>


Ошибок при подключении к БД не выдает, значит к БД подключение есть, но почему то в браузере выводит загадочное Array?
И еще не добавляет данные в БД из формы?  smile 

Автор: ksnk 23.5.2013, 23:41
Сейчас в базе одна запись?

вместо 
Код

echo $book;
  
можно написать 
Код

var_dump($book);

тогда, возможно, появится более содержательная информация.

Автор: NZero 23.5.2013, 23:51
С выводом разобрался! Сделал вот так:

Код

$connetc_bd=mysql_connect($server,$user,$pas) or die("MySql сервер недоступен".mysql_error());
mysql_select_db($db, $connetc_bd) or die("Нет соединения с БД".mysql_error());
$out="select * from gbook";
$rez=mysql_query($out, $connetc_bd);
while($book=mysql_fetch_row($rez))
    {
        foreach($book as $value)
        {
            echo $value;
        }
    }


А добавление все равно не работает( В чем ошибка?

Автор: NZero 24.5.2013, 00:13
Разобрался вот как надо было сделать:

Код

if( isset($_POST['sub_add'], $_POST['name'], $_POST['city'], $_POST['comment']) )
{
    $name = mysql_real_escape_string($_POST['name']);
    $date = date('Y-m-d');
    $city = mysql_real_escape_string($_POST['city']);
    $text = mysql_real_escape_string($_POST['comment']);
    $add='INSERT INTO `gbook` (`name`, `date`, `city`, `text`) VALUES ("' . $name . '", "' . $date . '", "' . $city . '", "' . $text . '")';
    mysql_query($add);    
}

Автор: Basili4 24.5.2013, 13:04
Ну надо бы сделать  с помощью PDO. ну это оффтоп

а вообще то

$add='insert into gbook (name, date, city, text) values ($name, $date, $city, $text)';
одинарные кавычки замените на двойные.

Ну и как показал NZero используйте mysql_real_escape_string.

Но лучше PDO


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id519e7e6e6ccc199a7c000002#findElement_E7045_519f3b3f6ccc191855002484_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)