2013-04-19 87 views
78

Tôi đang cố gắng thêm một cột mới vào bảng MYSQL của tôi bằng cách sử dụng PHP. Tôi không chắc chắn làm thế nào để thay đổi bảng của tôi để cột mới được tạo ra. Trong bảng đánh giá của tôi, tôi cóCách thêm cột mới vào bảng MYSQL

assessmentid | q1 | q2 | q3 | q4 | q5 

Nói rằng tôi có một trang với một textbox và tôi gõ q6 vào textbox và nhấn một nút sau đó bảng được cập nhật để

assessmentid | q1 | q2 | q3 | q4 | q5 | q6 

Cảm ơn trước

<?php 
include 'core/init.php'; 
include 'core/admininit.php'; 
include 'includes/overall/overall_header.php'; 
adminprotect_page(); 
include 'includes/adminmenu.php'; 
?>  
<?php 

mysql_query("ALTER TABLE `assessment` ADD newq INT(1) NOT NULL AFTER `q10`"); 

?> 
<h1>Input Career Name</h1> 

    <form method="post" action=""> 

     Career Name 
     <input type="text" name="newq" size="20"> 

    <input type="submit" 
     name="submit" value="Submit"> 

</body> 
</html> 
+3

RTLM: http://dev.mysql.com/doc/refman/5.1/en/alter-table .html –

+0

Tôi không chắc chắn cách truy vấn của mình, tôi có điều này và nó không hoạt động .. $ sql = mysql_query ("SELECT * FROM assessment"); nếu (! $ Sql) { mysql_query ("ALTER TABLE' assessment' ADD 'q6' INT (1) NOT NULL SAU 'q5'"); echo 'Q6 được tạo'; } ELSE { // từ đây chỉ tiếp tục trang như bình thường! echo 'Q6 đã tồn tại!'; –

+1

@StevenTín hiệu bình luận không phải là nơi tốt nhất cho mã nguồn. Nếu bạn đang hiển thị nơi bạn đang gặp vấn đề của bạn, nó phải là một phần của câu hỏi. Bạn có thể chỉnh sửa câu hỏi của mình để bao gồm nguồn không? –

Trả lời

198

bảng của bạn:

q1 | q2 | q3 | q4 | q5 

bạn cũng có thể làm

ALTER TABLE yourtable ADD q6 VARCHAR(255) after q5 
+2

Cảm ơn, Nó đã làm việc với - mysql_query ("ALTER TABLE' assessment' ADD 'q6' INT (1) NOT NULL SAU 'q5'"); –

+0

Làm cách nào tôi có thể đặt tên cho cột bất kỳ tên nào tôi nhập vào hộp văn bản? –

+0

nếu bạn có nghĩa là một hộp văn bản dạng html đơn giản, bạn có thể làm điều đó bằng cách nhận bài đăng hoặc nhận thông số trên trang đích của biểu mẫu – Dima

6
$table = 'your table name'; 
$column = 'q6' 
$add = mysql_query("ALTER TABLE $table ADD $column VARCHAR(255) NOT NULL"); 

bạn có thể thay đổi VARCHAR(255) NOT NULL vào những gì từng datatype bạn muốn.

+0

Cảm ơn, làm cách nào tôi có thể đặt tên cho cột bất kỳ tên nào tôi nhập vào hộp văn bản? –

+1

@StevenTrainor ý bạn là gì bởi 'textbox'? nếu bạn có nghĩa là một 'đầu vào' cái gì' loại = 'văn bản'' viết '$ cột = $ _POST [' textbox '];' –

+0

@StevenTrainor đầu tiên bạn cần phải đặt tên cho đầu vào của bạn' name = 'textbox'' hoặc thay đổi textbox trong '$ column = $ _POST ['textbox'];' vào tên của đầu vào ... –

2

Cái gì như:

$db = mysqli_connect("localhost", "user", "password", "database"); 
$name = $db->mysqli_real_escape_string($name); 
$query = 'ALTER TABLE assesment ADD ' . $name . ' TINYINT NOT NULL DEFAULT \'0\''; 
if($db->query($query)) { 
    echo "It worked"; 
} 

đã không kiểm tra nó nhưng nên làm việc.

+0

Cảm ơn - Làm thế nào tôi có thể đặt tên cho cột bất kỳ tên nào tôi nhập vào một hộp văn bản? –

+0

Thay thế nhiệm vụ '$ name' của tôi bằng:' $ name = $ db-> mysqli_real_escape_string ($ _ GET ['input']); 'giả sử bạn gửi biểu mẫu của bạn bình thường. Nếu đó là ajax thì phức tạp hơn một chút. –

0

Dựa trên nhận xét của bạn, có vẻ như bạn chỉ đang thêm cột mới nếu: mysql_query("SELECT * FROM assessment"); trả về sai. Đó có lẽ không phải là những gì bạn muốn. Thử xóa '!' ở phía trước của $ sql trong câu lệnh 'if' đầu tiên. Vì vậy, mã của bạn sẽ trông giống như:

$sql=mysql_query("SELECT * FROM assessment"); 
if ($sql) { 
mysql_query("ALTER TABLE assessment ADD q6 INT(1) NOT NULL AFTER q5"); 
echo 'Q6 created'; 
}else... 
0

Bạn nên nhìn vào bình thường hóa cơ sở dữ liệu của bạn để tránh tạo ra các cột khi chạy.

Make 3 bảng:

  1. đánh giá
  2. câu hỏi
  3. assessment_question (cột assessmentId, questionId)

câu hỏi và đánh giá Đặt trong các bảng tương ứng của họ và liên kết chúng với nhau thông qua assessment_question sử dụng khóa ngoại.

4
  • Bạn có thể thêm một cột mới vào cuối bảng của bạn

    ALTER TABLE assessment ADD q6 VARCHAR(255)

  • Thêm cột vào đầu của bảng

    ALTER TABLE assessment ADD q6 VARCHAR(255) FIRST

  • Thêm cột bên cạnh một cột được chỉ định

    hơn

    ALTER TABLE assessment ADD q6 VARCHAR(255) after q5

và các tùy chọn here

0

cho WordPress:

global $wpdb; 


$your_table = $wpdb->prefix. 'My_Table_Name'; 
$your_column =    'My_Column_Name'; 

if (!in_array($your_column, $wpdb->get_col("DESC " . $your_table, 0))){ $result= $wpdb->query(
    "ALTER  TABLE $your_table  ADD $your_column  VARCHAR(100)  CHARACTER SET utf8  NOT NULL  " //you can add positioning phraze: "AFTER My_another_column" 
);} 
Các vấn đề liên quan