Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [PHP] Работа с MySQL


Автор: doook 9.6.2010, 01:04
Добрый день, помогите решить задачу.
1. Создайте скрип, который открывает соединение с сервером БД и информирует о
результате соединения.
2. Создайте три двухмерных массива цифровой, строчной и бинарной информацией.
3. Создайте три таблицы и запишите в них данные из массивов.
4. Сформируйте HTML-страницу с выводом данных из массивов и БД.
Первое: Работает нормально.
Код

    $link = mysql_connect("localhost", "root", "")
        or die("Не получилось соединится: " . mysql_error()."\n");
    print ("Соединение установлено успешно.\n");

Второе: Вроде правельно.
Код

    $text_arr["1"] = "1";
    $text_arr["2"] = "2";
    $text_arr["3"] = "3";
    $text_arr["4"] = "4";
    $text_arr["5"] = "5";
    
    $int_arr["1"] = 1;
    $int_arr["2"] = 2;
    $int_arr["3"] = 3;
    $int_arr["4"] = 4;
    $int_arr["5"] = 5;
    
    $bin_arr["1"] = 0x123;
    $bin_arr["2"] = 0x234;
    $bin_arr["3"] = 0x345;
    $bin_arr["4"] = 0x456;
    $bin_arr["5"] = 0x567;


Третий: Вылетает ошибка при записи числового массива.
Код

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result

Код

    $counter = 0;
    foreach($int_arr as $val){
     if(mysql_query("insert into int values($counter,".$val.")")){
         echo $val." успешно записано в БД.";
         $counter++;
     }
     else {
         printf ("Ошибка при записе в БД: %s\n", mysql_error());
     }
    }


Dump БД:
Код

CREATE DATABASE `ira_db` ;

CREATE TABLE `ira_db`.`bin` (
`id` INT UNSIGNED NOT NULL ,
`name` TEXT NULL DEFAULT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

CREATE TABLE `ira_db`.`str` (
`id` INT UNSIGNED NOT NULL ,
`name` TEXT NULL DEFAULT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

CREATE TABLE `ira_db`.`int` (
`id` INT UNSIGNED NOT NULL ,
`name` TEXT NULL DEFAULT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

Автор: Mpak 9.6.2010, 01:35
День добрый. У Вас в базе данных поле name в таблице int определено как text, поэтому при добавлении значения в бд само значение нужно окружать кавычками.
то есть 
Код

mysql_query("insert into int values($counter,'".$val."')")

Автор: patap 9.6.2010, 09:37
то что написал Mpak - это раз

и два -  int - это зарезервированое слово, описывающее тип данных, его нельзя просто так использовать в запросах, если им названа таблица. В этом случае его нужно брать в такие кавычки `int`

Код
mysql_query("insert into `int` values($counter, '$val')");

Автор: doook 9.6.2010, 10:41
Всем огромное СПАСИБО!

Автор: Mpak 9.6.2010, 14:06
упс.. чета про инт не подумал.. и кстати, насчет переменной $counter: почитайте про AUTO_INCREMENT в MySQL smile

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