এমওয়াইএসকিউএল টেবিলে কীভাবে নতুন কলাম যুক্ত করবেন?


100

আমি পিএইচপি ব্যবহার করে আমার এমওয়াইএসকিউএল টেবিলটিতে একটি নতুন কলাম যুক্ত করার চেষ্টা করছি। আমার টেবিলটি কীভাবে পরিবর্তন করা যায় তা সম্পর্কে আমি নিশ্চিত নই যাতে নতুন কলামটি তৈরি হয়। আমার মূল্যায়নের টেবিলে আমার রয়েছে:

assessmentid | q1 | q2 | q3 | q4 | q5 

বলুন আমার কাছে একটি পাঠ্যবাক্স সহ একটি পৃষ্ঠা রয়েছে এবং আমি পাঠ্যবক্সে টাইপ করি q6এবং একটি বোতাম টিপুন তারপর টেবিলটি এতে আপডেট হয়:

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

আমার কোড:

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


আমি কীভাবে আমার ক্যোয়ারী শব্দটি বলতে পারি তা আমি নিশ্চিত নই, এটি আমার কাছে রয়েছে এবং এটি কার্যকর হয় না .. $ sql = mysql_query ("মূল্যায়ন থেকে" নির্বাচন করুন "); if (! q sql) {mysql_query ("ALL TABLE INT assessmentযোগ করুন q6(1) পরে নਾਲ q5"); প্রতিধ্বনি 'কিউ 6 তৈরি হয়েছে'; } ইএলএসই {// এখান থেকে কেবল যথারীতি পৃষ্ঠাটি চালিয়ে যান! প্রতিধ্বনি 'কিউ 6 ইতিমধ্যে বিদ্যমান!';
স্টিভেন ট্রেনার

1
@ স্টিভেনট্রেনর মন্তব্যগুলি সোর্স কোডের জন্য সেরা জায়গা নয়। আপনি যদি নিজের সমস্যাটি কোথায় দেখিয়ে দিচ্ছেন তবে এটি প্রশ্নের একটি অংশ হওয়া উচিত। আপনি উত্স অন্তর্ভুক্ত আপনার প্রশ্ন সম্পাদনা করতে পারেন?
নিক ফ্রিম্যান 21

খারাপ কোড আপনি যখন সদৃশ ক্ষেত্র যুক্ত করার চেষ্টা করছেন কেবল তখনই নয়, mysql_query কোনও ব্যর্থতায় বুলেটিয়ান মিথ্যা ফিরিয়ে দেবে। সর্বদা mysql_error()কী ভুল হয়েছে তা পরীক্ষা করে দেখুন। যেমন $result = mysql_query($sql) or die(mysql_error());
মার্ক বি

এই প্রশ্নটির পিএইচপি এর সাথে কী সম্পর্ক আছে?
কলব ক্যানিয়ন

উত্তর:


237

আপনার টেবিল:

q1 | q2 | q3 | q4 | q5

আপনি করতে পারেন

ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5

2
ধন্যবাদ, এটি - mysql_query ("ALTER TABLE INT assessmentADD q6(1) NULL AFTER q5") এর সাথে কাজ করেছে;
স্টিভেন ট্রেইনার 21

আমি পাঠ্যবক্সে যে নামটি লিখি তার নাম কীভাবে করব?
স্টিভেন ট্রেনার

1
আপনি জমা দেওয়ার পরে পাঠ্য বাক্সের মান $ _POST ['newq'] এ হওয়া উচিত
ডিমা

9
@ স্টিভেনট্রেনর: এসকিউএল স্টেটমেন্টের মতো আপনার পাঠ্য বাক্সে স্ট্রিংটি ব্যবহার করবেন না । এসকিউএল ইনজেকশন দুর্বলতা এড়াতে আপনাকে অবশ্যই এড়াতে হবে তা নিশ্চিত করতে হবে।
কোস্টি সিউদাতু

2
এটি ২০১৫ এবং লোকেরা এখনও স্কেল ইনজেকশন দুর্বলতার জন্য নিজেকে সেট আপ করার চেষ্টা করছে— ফেসপাম:
কমান্ডজেড

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

আপনি VARCHAR( 255 ) NOT NULLযা datatypeচান তা আপনি পরিবর্তন করতে পারেন।


ধন্যবাদ পেয়েছি, আমি পাঠ্যবক্সে যে নামটি লিখি তার নাম কীভাবে করব?
স্টিভেন ট্রেইনার 21

1
@ স্টিভেনট্রেনর আপনি কী বলতে চাইছেন textbox? যদি আপনার inputকোন type='text'লেখার অর্থ হয়$column = $_POST['textbox'];
আবদুল্লাহ সালমা

@ স্টিভেনট্রেনর প্রথমে আপনাকে নিজের ইনপুটটির নাম লিখতে হবে name='textbox'বা পাঠ্যবক্সটি ইনপুটটির নামে পরিবর্তন $column = $_POST['textbox'];করতে হবে ...
আব্দুল্লাহ সালমা

6
  • আপনি আপনার টেবিলের শেষে একটি নতুন কলাম যুক্ত করতে পারেন

    ALTER TABLE assessment ADD q6 VARCHAR( 255 )

  • সারণির শুরুতে কলাম যুক্ত করুন

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST

  • একটি নির্দিষ্ট কলামের পাশে কলাম যুক্ত করুন

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5

এবং আরও বিকল্প এখানে


3

কিছুটা এইরকম:

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

এটি পরীক্ষা করা হয়নি তবে কাজ করা উচিত।


ধন্যবাদ - আমি পাঠ্যবক্সে যে নামটি লিখি তার নাম কীভাবে করব?
স্টিভেন ট্রেইনার 21

আমার $nameঅ্যাসাইনমেন্টটি এর সাথে প্রতিস্থাপন করুন : $name = $db->mysqli_real_escape_string($_GET['input']);ধরে নিচ্ছেন আপনি সাধারণত আপনার ফর্মটি জমা দিন। এটি যদি আজাক্স হয় তবে এটি আরও জটিল।
গ্লিচ ডিজায়ার

0

আপনার মন্তব্যের উপর ভিত্তি করে দেখে মনে হচ্ছে আপনি কেবল নতুন কলাম যুক্ত করছেন যদি: mysql_query("SELECT * FROM assessment");মিথ্যা ফেরত দেয়। আপনি সম্ভবত যা চান তা সম্ভবত এটি নয়। ''! মুছে ফেলার চেষ্টা করুন! প্রথম 'if' বিবৃতিতে the বর্গক্ষেত্রের সামনে। সুতরাং আপনার কোডটি দেখতে পাবেন:

$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

রানটাইমের সময় কলাম তৈরি করা এড়াতে আপনার আপনার ডাটাবেসকে সাধারণকরণের দিকে নজর দেওয়া উচিত।

3 টেবিল তৈরি করুন:

  1. মূল্যায়ন
  2. প্রশ্ন
  3. মূল্যায়ন_প্রশ্ন

তাদের নিজ নিজ টেবিলগুলিতে প্রশ্ন এবং মূল্যায়ন রাখুন এবং বিদেশী কী ব্যবহার করে মূল্যায়ন_কোশনের মাধ্যমে তাদেরকে লিঙ্ক করুন।


0

ওয়ার্ডপ্রেসের জন্য:

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.