За последние 24 часа нас посетили 56094 программиста и 1771 робот. Сейчас ищут 1233 программиста ...

Помогите разобраться с запросом в БД

Тема в разделе "PHP для новичков", создана пользователем sharunm, 13 авг 2016.

  1. sharunm

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

    С нами с:
    16 ноя 2014
    Сообщения:
    58
    Симпатии:
    0
    Ребята, помогите разобраться.

    Есть массив $columns, который я решил использовать для создания таблицы в БД. Вот код:

    Код (Text):
    1.  
    2. $col_type = 'VARCHAR (255)';
    3.  
    4. for ($i=0; $i<count($columns); $i++) {
    5.  
    6. $sql_cr_col = $sql_cr_col.'`cl'.$i.'_'.$columns[$i].'` '.$col_type.', ';
    7.  
    8.  
    9. }
    10.  
    11. $sql_create_tab = 'CREATE TABLE '.$tablename.' (id int auto_increment primary key, '.$sql_cr_col.' bearing_table_id INT)';
    12.  
    13. mysql_query($sql_create_tab);
    14.  
    15. mysql_close();
    Но таблица не создается. Пишем:

    Код (Text):
    1. echo $sql_create_tab;
    Получаем:
    Код (Text):
    1. CREATE TABLE b_ball_1r_radial (id int auto_increment primary key, `cl0_GOST` VARCHAR (255), `cl1_International ` VARCHAR (255), `cl2_d` VARCHAR (255), `cl3_D` VARCHAR (255), `cl4_B` VARCHAR (255), `cl5_r` VARCHAR (255), `cl6_weight` VARCHAR (255), bearing_table_id INT)
    Скопировал результат и вставил в переменную, потом отправил запрос:

    Код (Text):
    1. $sql_create_tab = 'CREATE TABLE b_ball_1r_radial(id int auto_increment primary key, cl0_GOST VARCHAR (255), cl1_International VARCHAR (255), cl2_d VARCHAR (255), cl3_D VARCHAR (255), cl4_B VARCHAR (255), cl5_r VARCHAR (255), cl6_weight VARCHAR (255), bearing_table_id INT)';
    2.  
    3. mysql_query($sql_create_tab);
    4.  
    5. mysql_close();
    Работает.....

    Но мне надо, чтобы работало с массивом $columns...

    Проверял тип переменной $sql_create_tab - string.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вызови mysqli_error и прочитай почему таблица не создается.
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @sharunm 'CREATE TABLE '.$tablename.' (id int auto_increment primary key, '.$sql_cr_col.' bearing_table_id INT)' Загони в phpmyAdmin эту строчку и ты поймёшь почему не создаётся, только соответственно переменные замени на тестовые данные.
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @sharunm я так всегда делаю, когда у меня запрос не проходит, а в phpmyadmin конкретно видно почему.
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @askanim промахнулся обращением. В пхп тоже отлично видно. Умей пользоваться пхп. ПМА может быть недоступна. Что ты будешь делать?
     
  7. sharunm

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

    С нами с:
    16 ноя 2014
    Сообщения:
    58
    Симпатии:
    0
    Сделал проще. У меня на одном ноуте что-то не хотел подлючаться на локалхосте к БД, на другом сделал. Я подготовил html таблицы на локалке и хотел распарсить их для mysql, решил воспользоваться SimpleHTMLDom. Косяк был и здесь. В общем, все же по-старинке, регулярные выражения помогли и все заработало.
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    @Ganzal, а чего останавливаться то? php тоже может быть не доступно, но всегда есть mysql -e )
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @romach ну тут ты палку перегнул. Как будет недоступен пхп, если у тебя случилась ошибка при выполнении пхп-скрипта? Речь ведь была о том, что если у тебя что-то пошло не так - через эррор ты не только можешь получить текст ошибки, но еще и прервать выполнение программы, зависящей от результата этого запроса (если исключениями драйвер не бросается. а он не бросается, потому что у ТС старый добрый mysql без улучшений).