2013-11-18 8 views
1

В раскрывающемся списке есть форма, заполненная значениями из mysql db. Поля таблицы для раскрывающегося списка - это тип enum. Я пытаюсь сделать insert значение, выбранное пользователем в базе данных. Я получаю только результат NULL. Как я могу выбрать insert из выпадающего списка в таблицу? SITEВставить в mysql db выбранное значение из выпадающего меню (перечисление)

РНР

<?php 

$db_con = new mysqli(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 

if(isset($_POST['submit'])) { 

$db_insert = $db_con->prepare("INSERT INTO academy (name, type, academy_id) VALUES (?,?,?,?)"); 
$db_insert->bind_param('ssi', $_POST['name'], $type_value, $_POST['acad_id']); 
$db_insert->execute(); 

print_r($_POST); 
} 

?> 
<form action="test7.php" method="POST"> 
     Name: <input type="text" name="name"></br> 
     Type: 
      <?php 

       $table_name = "academy"; 
       $column_name = "type"; 

       echo "<select id=\"$column_name\" name=\"$column_name\"><option>Select one</option>"; 
       $q = "SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
        WHERE TABLE_NAME = '$table_name' AND COLUMN_NAME = '$column_name'"; 
       $r = mysqli_query($db_con, $q); 

       $row = mysqli_fetch_array($r); 
       //print_r($row); 
       $enumList = explode(",", str_replace("'", "", substr($row['COLUMN_TYPE'], 5, (strlen($row['COLUMN_TYPE'])-6)))); 
       //print_r($enumList); 
       foreach($enumList as $type_value){ 
        echo "<option value='$type_value'>$type_value</option>"; 
       } 
       echo "</select></br>"; 

      ?> 
     Academy ID: <input type="text" id="acad_id" name="acad_id"></br> 
    <input value="SAVE" name="submit" type="submit"> 
</form> 

ТАБЛИЦА

CREATE TABLE IF NOT EXISTS `academy` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(25) DEFAULT NULL, 
    `academy_id` int(11) DEFAULT NULL, 
    `type` enum('INACTIVE','ACTIVE') DEFAULT 'ACTIVE', 
PRIMARY KEY (`id`) 
); 
+0

Там нет графы «TYPE» в таблице, но вы использовали в вашем заявлении о вставке .. – sudhakar

ответ

2

Колонка несовпадающими ('ssi',),

$db_insert = $db_con->prepare("INSERT INTO academy (name, type, academy_id) VALUES (?,?,?)"); 
$db_insert->bind_param($_POST['name'], $_POST['type'], $_POST['acad_id']); 
0
if(isset($_POST['submit'])) { 

$db_insert = $db_con->prepare("INSERT INTO academy (name, type, status, academy_id) VALUES (?,?,?,?)"); 
$db_insert->bind_param('ssi', $_POST['name'], $_POST['type'], $_POST['acad_id']); 
$db_insert->execute(); 

print_r($_POST); 
} 

Не нужно задавать значение в столбце состояния ??? Если вам не нужно удалять один знак вопроса '?' что из вашего запроса

if(isset($_POST['submit'])) { 

$db_insert = $db_con->prepare("INSERT INTO academy (name, type, academy_id) VALUES (?,?,?)"); 
$db_insert->bind_param('ssi', $_POST['name'], $_POST['type'], $_POST['acad_id']); 
$db_insert->execute(); 

print_r($_POST); 
} 

, если нужно, вы должны добавить «s» добавить bind_param и значение состояния, как показано ниже

if(isset($_POST['submit'])) { 

$db_insert = $db_con->prepare("INSERT INTO academy (name, type, status, academy_id) VALUES (?,?,?,?)"); 
$db_insert->bind_param('sssi', $_POST['name'], $_POST['type'], $status, $_POST['acad_id']); 
$db_insert->execute(); 

print_r($_POST); 
} 
Смежные вопросы