За последние 24 часа нас посетили 17675 программистов и 1615 роботов. Сейчас ищут 1915 программистов ...

Запись данных в БД MySql

Тема в разделе "PHP и базы данных", создана пользователем dembi, 21 июл 2008.

  1. dembi

    dembi Активный пользователь

    С нами с:
    21 июл 2008
    Сообщения:
    78
    Симпатии:
    0
    Добрый День, Всем!

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

    Ниже приведен сам код:

    <?php
    $hostname = "127.0.0.1:3306";
    $username = "root";
    $pass="";
    $dbName = "test";
    $usertable = "clients";
    $nameuser=$_REQUEST['name'];
    $preference=$_REQUEST["preference"];
    $mail=$_REQUEST["email"];



    PRINT "<CENTER>";
    echo "Привет.<BR>";
    echo $nameuser."<BR>\n";
    echo "Спасибо за ваш интерес.<BR><BR>";
    echo "Вас интересуют $preference Информацию о них мы пошлем вам на email: $mail";
    echo "</CENTER>";

    mysql_connect($hostname,$username,$pass) or die("could not connect");

    PRINT "Connected to MYSQL...";

    mysql_select_db($dbName) or die("could not connect to DB");

    PRINT "<BR>Connect to DB";

    $z="INSERT INTO $usertable (name,email,choise) VALUES ($nameuser,$mail,$preference)";

    print "<BR>".$z;

    $rez=mysql_query($z) or die("Query failed");

    mysql_close();
    ?>

    Т о есть при вызове этого скрипта я всегда получаю ошибку "Query failed".
    Где я ошибаюсь?

    Заранее спасибо!
     
  2. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    or die("Query failed") замени на or die("Query failed: ".mysql_error()) и посмотри, наконец, что за ошибка у тебя происходит:)
     
  3. DoGGy

    DoGGy Активный пользователь

    С нами с:
    9 июл 2008
    Сообщения:
    12
    Симпатии:
    0
    $z="INSERT INTO $usertable (name,email,choise) VALUES ('$nameuser','$mail','$preference')";
     
  4. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    DoGGy

    тогда уж

    PHP:
    1. <?php
    2. $z="INSERT INTO `$usertable` (`name`,`email`,`choise`) VALUES ('$nameuser','$mail','$preference')";
    3. ?>
     
  5. dembi

    dembi Активный пользователь

    С нами с:
    21 июл 2008
    Сообщения:
    78
    Симпатии:
    0
    Прописал следующие:

    mysql_select_db($dbName) or die("could not connect to DB");
    PRINT "<BR>Connect to DB";
    $z="INSERT INTO $usertable (name,email,choise) VALUES ('$nameuser','$mail','$preference')";
    print "<BR>".$z;
    $rez=mysql_query($z) or die("Query failed:".mysql_error());

    При вызове данной функции получаю следующию ошибку:

    INSERT INTO clients (name,email,choise) VALUES ('Eugene','eugene','Апельсины')Query failed:Data too long for column 'choise' at row 1

    в таблице clients, для поля name я использую тип VARCHAR(25), для email VARCHAR(25), для choise VARCHAR(8)
     
  6. Anonymous

    Anonymous Guest

    dembi, сколько букв в слове Апельсины ?
     
  7. dembi

    dembi Активный пользователь

    С нами с:
    21 июл 2008
    Сообщения:
    78
    Симпатии:
    0
    Н важно, пусть даже varchar(8) все равно он должен записывать данные, но они будут обрезаться до 8 символов.

    Всем спасибо большое.
    Разобрался в чем дело.
    Все работает теперь.

    проблемы была в том, что по умол. кодировка для этого поля была latin1.
    Сейчас я изменил это значение на utf8 и все заработало.

    Кому интересно изменить тип кодировки. Можно следующим образом:
    Alter table clients modify choise CHAR(10) CHARSET utf8;

    Где clients – это моя таблица
    Choise – это мое поле, куда заносится информация о Апельсинах 