2015-04-09 3 views
0

Я пытаюсь создать таблицу с столбцами из ввода формы пользователя. текстовое поле создает базу данных, другое текстовое поле создает таблицы и с помощью javascript можно создавать больше текстовых полей, что создает больше таблиц. Теперь у меня есть текстовое поле рядом с текстовым полем «таблица», которое может принимать записи, такие как: «цена котировки позиции элемента» Общее количество входов неизвестно может быть от четырех до шести, например, но я пытаюсь создать столбцы в таблицах на основе этих значений. В базе данных создается только один столбец, который является последним значением, например, ценой, но я пытаюсь получить все значения в правильной таблице.php mysql explode database insert

$getMessage = $_POST["dbMessages"]; 
$questions = $_POST["dbMessagesName"]; 
$answers = $_POST["dbMessages"]; 
$combined = array_combine($questions, $answers);  
$dbConnectionT = mysqli_connect($host, $user, $password, $dbName); 
     // create loop to assign input boxes together 
foreach($combined as $question => $answer) 
{   
    $answerSplit = explode(" ", implode($getMessage)); 
    foreach ($answerSplit as $split) 
     { 
     // create the tables and columns from the message text box 
     $sqlCreateTable = "CREATE TABLE " . $question . "(
     " . $split . " VARCHAR(6) 
         )" ; 
         echo $split; 
         echo "</br>"; 
        } 
        // if the connection and sql query is true echo for debugging 
        if ($dbConnectionT->query($sqlCreateTable) == TRUE) { 
        print "{$question} = {$answer} "; 
        //echo "made it here"; 
        echo "</br>"; 

        } 
    } 

Так что я пытаюсь разделить текстовое поле с помощью взрыва и попытаться обновить таблицу вопросов с помощью соответствующего ответа. Обратите внимание, что в этом примере я понимаю свое нарушение в первичном ключе базы данных и не беспокоюсь о ключевых аспектах базы данных, для этого примера!

Заранее спасибо

+2

Честно говоря, этот проект выходит плохо. Существует абсолютно ** НЕТ ** причина для создания таблицы на вопрос. И он уязвим для [sql injection attack] (http://bobby-tables.com) в любом случае. И как написано. вы не создаете одну таблицу с несколькими полями, вы создаете кучу строк sql, которые создавали бы единую таблицу полей, но затем вы переводите их на каждую итерацию цикла, оставляя только инструкцию LAST create. Так по сути. независимо от того, сколько вы создадите '$ split', вы будете выполнять только один запрос' create'. –

+0

ужасно! извините :( –

+0

Это не задача базы данных, одна из программ, это не происходит, поэтому никаких проблем с внедрением SQL-запросов не требуется! Это нужно прочитать в сообщении и создать необходимые аспекты. Я понимаю базы данных и важность атак и отношений и т. д. Но это программный аспект! Спасибо! – tony

ответ

0

Вместо того чтобы создавать таблицы для каждого разделения (который будет только перезапись себя), вы должны хранить данные в строку JSON и создать таблицу с данными в формате JSON.

+0

Привет, спасибо за ваш продуктивный комментарий, у вас есть пример для этого, пожалуйста? – tony

+0

http://php.net/manual/en/function.json-encode.php Здесь у вас есть документация о JSON и некоторые инструменты для ее обработки. Я бы использовал этот ответ, чтобы поместить JSON в mysql db http://stackoverflow.com/questions/3199887/send-json-object-to-mysql-using-jquery-javascript-php. Я надеюсь, что это помогает –

0

Рабочий раствор

$getMessage = $_POST["dbMessages"]; 
    $questions = $_POST["dbMessagesName"]; 
    $answers = $_POST["dbMessages"]; 
    $combined = array_combine($questions, $answers); 

$dbConnectionT = mysqli_connect($host, $user, $password, $dbName); 


     // create loop to assign input boxes together 
     foreach($combined as $question => $answer) 
     { 

      $columns = "`".str_replace(" ", "` VARCHAR(60), `", $answer)."` VARCHAR(60)"; 
      // create the tables and columns from the message text box 
        $sqlCreateTable = "CREATE TABLE " . $question . "(
             " . $columns . " 
             )"; 

          echo "</br>"; 


        // if the connection and sql query is true echo for debugging 
        if ($dbConnectionT->query($sqlCreateTable) == TRUE) { 


        print "{$question} = {$answer} "; 
        echo "</br>"; 
        echo "add messages "; 
        echo "</br>"; 


      } 
     }