MYSQL tablosuna yeni sütun nasıl eklenir?


103

PHP kullanarak MYSQL tabloma yeni bir sütun eklemeye çalışıyorum. Yeni sütunun oluşturulması için tablomu nasıl değiştireceğimden emin değilim. Değerlendirme tablomda:

assessmentid | q1 | q2 | q3 | q4 | q5 

Diyelim ki metin kutusu olan bir sayfam var ve metin kutusuna yazıyorum q6ve bir düğmeye bastığımda tablo şu şekilde güncelleniyor:

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

Kodum:

<?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>


Sorgumu nasıl yazacağımdan emin değilim, bu var ve çalışmıyor .. $ sql = mysql_query ("SEÇ * DEĞERLENDİRME"); eğer (! $ sql) {mysql_query ("DEĞİŞTİRME TABLOSU assessmentEKLE q6INT (1) SONRA BOŞ DEĞİL q5"); echo 'Q6 oluşturuldu'; } DEĞİLSE {// buradan sayfaya her zamanki gibi devam edin! echo 'Q6 zaten var!';
Steven Trainor

1
@StevenTrainor yorumları kaynak kodu için en iyi yer değildir. Sorununuzu nerede yaşadığınızı gösteriyorsanız, bu sorunun bir parçası olmalıdır. Sorunuzu kaynağı içerecek şekilde düzenleyebilir misiniz?
Nick Freeman

kötü kod. mysql_query, yalnızca yinelenen bir alan eklemeye çalıştığınızda değil, HERHANGİ bir başarısızlık durumunda boolean false döndürür. her zaman mysql_error()neyin yanlış gittiğini kontrol edin . ör $result = mysql_query($sql) or die(mysql_error());.
Marc B

Bu sorunun PHP ile ne ilgisi var?
Kolob Canyon

Yanıtlar:


243

senin masan:

q1 | q2 | q3 | q4 | q5

sen de yapabilirsin

ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5

2
Teşekkürler, - mysql_query ("ALTER TABLE assessmentADD q6INT (1) NOT NULL SONRA q5");
Steven Trainor

Metin kutusuna yazdığım ad ne olursa olsun sütuna nasıl ad verebilirim?
Steven Trainor

1
metin kutusunun değeri gönderdikten sonra $ _POST ['newq'] şeklinde olmalıdır
Dima

10
@StevenTrainor: Do not SQL deyiminde gibi metin kutusuna dize kullanabilirsiniz. SQL enjeksiyon güvenlik açığından kaçınmak için ondan kaçtığınızdan emin olmalısınız.
Costi Ciudatu

2
Yıl

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

değiştirebileceğiniz VARCHAR( 255 ) NOT NULLher ne içine datatypeistediğiniz.


Anladım, teşekkürler, bir metin kutusuna yazdığım ad ne olursa olsun sütuna nasıl ad verebilirim?
Steven Trainor

1
@StevenTrainor ne demek istiyorsun textbox? inputNe demek istiyorsan type='text'yaz$column = $_POST['textbox'];
Abdullah Salma

@StevenTrainor ilk girişinizi isim gerekir name='textbox'veya değişim metin kutusu $column = $_POST['textbox'];... girişin adını
Abdullah Salma

6
  • Tablonuzun sonuna yeni bir sütun ekleyebilirsiniz

    ALTER TABLE assessment ADD q6 VARCHAR( 255 )

  • Tablonun başına sütun ekleyin

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST

  • Belirtilen bir sütunun yanına sütun ekle

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5

ve burada daha fazla seçenek


3

Gibi bir şey:

$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";
}

Test etmedim ama çalışmalı.


Teşekkürler - Bir metin kutusuna yazdığım ad ne olursa olsun sütuna nasıl ad verebilirim?
Steven Trainor

Ödevimi $nameşununla değiştirin : $name = $db->mysqli_real_escape_string($_GET['input']);formunuzu normal şekilde göndereceğinizi varsayarak. Ajax ise biraz daha karmaşıktır.
Glitch Desire

0

Yorumunuza göre, yalnızca yeni sütunu ekliyormuşsunuz gibi görünüyor: mysql_query("SELECT * FROM assessment");false döndürür. Muhtemelen istediğin bu değil. '!' ilk 'if' ifadesindeki $ sql'nin önünde. Yani kodunuz şöyle görünecek:

$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

Çalışma zamanında sütun oluşturmaktan kaçınmak için veritabanınızı normalleştirmeye bakmalısınız.

3 masa yapın:

  1. değerlendirme
  2. soru
  3. değerlendirme_sorgusu (değerlendirme kimliği, soru kimliği sütunları)

Soruları ve değerlendirmeleri ilgili tablolarına yerleştirin ve bunları, değerlendirme_sorgusu aracılığıyla yabancı anahtarları kullanarak birbirine bağlayın.


0

WORDPRESS için:

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"
);}

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.