2015-05-18 112 views
0

我需要根据所选单选按钮从数据库中选择一个表格。我认为这将工作的方式是,1)通过确定在if语句中选择了哪个单选按钮并为其分配一个变量;以及2)将该变量分配给PDO中用于连接的$ dbname(表的变量)。我在尝试中没有取得成功,所以我需要知道如何从if语句中获取变量并在PDO中使用它(或者告诉我更好的解决方案)。使用单选按钮从数据库中选择表格

示例HTML(有三个单选按钮):

<div id="radio_buttons"> 
        <label for="p_book">Book</label> 
        <input type="radio" name="p_radio" id="p_book" value="p_book"> 

        <label for="p_article">Article</label> 
        <input type="radio" name="p_radio" id="p_article" value="p_article"> 

        <label for="journal">Journal</label> 
        <input type="radio" name="p_radio" id="p_journal" value="p_journal"> 


       </div> <!-- end radiobuttons --> 

如何定位在PHP单选按钮:

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

     if(isset($_POST['p_radio'])) { 
      $radio_values = $_POST['p_radio']; 
      if ($radio_values == 'p_book') { 
       $dbname = 'books'; //this is the name of the table 
       return $dbname; 

      }elseif ($radio_values == 'p_article') { 
       $dbname = 'articles'; 
       return $dbname; 


      }elseif ($radio_values == 'p_journal') { 
       $dbname = 'journals'; 
       return $dbname; 

      } 
     }else{ 
       echo 'unchecked'; 
    } 
    } 

然后我想,不知何故,得到该变量来计算在PDO中:

function connect($dbname, $servername) { 


     //$dbname is supposed to be retrieved from the if-statement 

     $servername = "localhost"; 
     $username = "admin"; 
     $password = "password"; 

    try { 
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 

我也试着把if语句放在connect()中,以防connect()没有从if语句访问变量:没有成功。

我在网上搜索了一个像疯子这样的信息,但没有运气。如果你知道一个涵盖这些东西的教程,请发布它。

+0

你不能在'if'语句中使用'return' ,它只是从函数返回一个值。你如何调用你的'connect()'函数? –

+1

为什么在函数中设置'$ servername'时,它是一个参数? – Barmar

+0

周杰伦:if语句最初是一个函数,但是返回(但thx的信息,没有意识到这一点)。 connect()从具有require_once的html文件调用:'filename.php';和一个我创建的变量,它指的是连接($ connect =“connect”;然后调用它:$ connect();)Barman:这是因为我曾经使用这些参数从php文件中调用函数,像这样:$ connect(name,server); - 我知道有错误,但你们会怎么做?问题是,从字符串变量(表名)中检索值并将其添加到PDO中。 –

回答

0

我解决了这个问题(它不是面向对象的,它仍然是一个有点原始)是通过实现3个步骤的方式:

1)创建一个函数if语句来检查的单选按钮值和分配值赋给与表名对应的变量; 2)创建一个函数的变量,并在PDO中调用它(见下文);

3)在PDO函数内添加一个简单的if语句来检查是否没有单选按钮。

第一个函数:

function table_name() { 
    if (isset($_POST['edify_button'])) { 

     if(isset($_POST['p_radio'])) { 
      $radio_values = $_POST['p_radio']; 
      if ($radio_values == 'p_book') { 
       $table_name = 'books'; 
       return $table_name; 

      }elseif ($radio_values == 'p_article') { 
       $table_name = 'articles'; 
       return $table_name; 

      }elseif ($radio_values == 'p_journal') { 
       $table_name = 'journals'; 
       return $table_name; 
      } 
     }else{ 
       $table_name = false; 
     } 
    } 
} 

然后一些变量:

$table_name = "table_name"; 
$function_connect = "connect"; 
$function_connect(); //initialize the function; 

最后的PDO功能:

function connect() { 

     $dbname = 'citation'; 
     $servername = "localhost"; 
     $username = "admin"; 
     $password = "password"; 
     $table_name = table_name(); 


    try { 

     //if table is false, connection is refused; 
     if (table_name() == false) { 
      echo 'Pick a category'; 
     }else{ 

     //if table is not false, connection is executed depending on the radio button (which corresponds to a table); 

     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $conn->exec("SET NAMES 'utf8'"); 
     // set the PDO error mode to exception 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     echo "Connected successfully" . '<br>'; 

     //$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (:firstname, :lastname, :email)"); 

      $stmt = $conn->prepare("INSERT INTO $table_name //this is where the table is picked 
相关问题