2017-02-16 62 views
0

讓我們開始,我是PHP的新手,所以我仍然試圖學習。我在Wordpress上創建了一個表單,我想在一個表上插入這些值(data_test表,我管理了這個表),然後從data_test表中獲取所有列(id是自動增加數字,名稱,電子郵件,產品,數量用戶輸入)並插入到其他表中。我用這個HTML代碼的形式來解析值:我如何解析從一個PHP值到其他

<form action="../enter_data_insert.php" method="post" onsubmit="return form_validation()" name="myForm"> 
 

 
     Name <input id="name" name="name" type="text" /> 
 

 
     Email <input id="email" name="email" required type="email"/> 
 

 
     Product<input id="prod" name="prod" required type="text" /> 
 

 
     Quantity<input id="quant" name="quant" required type="number" min="1"/> 
 

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

 
     </form>

然後這個PHP取的值:

<?php 
 

 
if(!empty($_POST["name"]) && !empty($_POST["email"]) && !empty($_POST["prod"]) && !empty($_POST["quant"])){ 
 

 
//connect with database 
 
include "database_conn.php"; 
 

 
//get the form elements and store them in variables 
 

 
session_start(); 
 
$name=$_POST["name"]; 
 
$email=$_POST["email"]; 
 
$prod=$_POST["prod"]; 
 
$quant=$_POST["quant"]; 
 

 
//insert data on data_test table 
 
$sql="INSERT INTO `site_db`.`data_test` (`name` , `email`, `prod`,`quant`) VALUES ('$name','$email','$prod','$quant')"; 
 
if(!mysqli_query($con,$sql)){ 
 
    echo mysqli_error($con); 
 
} else{ 
 

 
    //retrieve data 
 

 
    $sql = "SELECT data_test_id FROM data_test WHERE prod='$prod'"; 
 
    $result = mysqli_query($con,$sql); 
 
    if(!$result){ 
 
     echo mysqli_error($con); 
 
    } else{ 
 
     while($value = mysqli_fetch_object($result)){ 
 
\t \t \t $id = intval($value->id); 
 
      $_SESSION['myid'] = $value->id; 
 
      var_dump($value); 
 
\t \t \t 
 
      //insert data on data_test_ins table 
 
      $sql="INSERT INTO site_db.data_test_ins` (id,name , email, prod,quant) VALUES ($id,'$name','$email','$prod','$quant')"; 
 
      if(!mysqli_query($con,$sql)){ 
 
       echo mysqli_error($con); 
 
      } else{ 
 

 
       //Redirects to the specified page 
 
      // header("Location: http://localhost/site/"); 
 
      } 
 
     } 
 
    } 
 
} 
 
} 
 
?>

現在在data_test表中插入除id之外的所有值,我猜它是null,因爲它是mu關閉第一次插入在PHP上,然後我不得不調用第二次插入(與/ /插入數據data_test_ins表)在其他PHP? 但我不確定,任何人都可以幫助我嗎?或者只是引導我什麼是正確的做法。 我開始認爲我必須創建兩個php來解析值,並採取第一個表,然後在另一個PHP插入值? 任何想法都很有幫助! :-)

回答

0

您是否嘗試過將$value->id傳入查詢而不是$value

它的一個對象具有結果集的當前行,所以您應該只傳遞此對象的id屬性。

$sql="INSERT INTO `site_db`.`data_test_ins` (`id`,`name` , `email`, `prod`,`quant`) VALUES ('$value->id','$name','$email','$prod','$quant')"; 

增加:

  • 停止使用mysql棄用庫。
  • 你應該檢查發佈的數據,如果其isset與否

編輯:

你的代碼應該是這樣的:

<?php 
 

 
if(!empty($_POST["name"]) && !empty($_POST["email"]) && !empty($_POST["prod"]) && !empty($_POST["quant"])){ 
 

 
    //connect with database 
 
    include "database_conn.php"; 
 

 
    //get the form elements and store them in variables 
 

 
    session_start(); 
 
    $name=$_POST["name"]; 
 
    $email=$_POST["email"]; 
 
    $prod=$_POST["prod"]; 
 
    $quant=$_POST["quant"]; 
 

 
    //insert data on data_test table 
 
    $sql="INSERT INTO `site_db`.`data_test` (`name` , `email`, `prod`,`quant`) VALUES ('$name','$email','$prod','$quant')"; 
 
    if(!mysqli_query($con,$sql)){ 
 
     echo mysqli_error($con); 
 
    } else{ 
 

 
     //retrieve data 
 

 
     $sql = "SELECT data_test_id FROM data_test WHERE prod='$prod'"; 
 
     $result = mysqli_query($con,$sql); 
 
     if(!$result){ 
 
      echo mysqli_error($con); 
 
     } else{ 
 
      while($value = mysqli_fetch_object($result)){ 
 
\t \t \t \t 
 
       $_SESSION['myid'] = $value->data_test_id; 
 
\t \t \t \t $id = intval($value->data_test_id); 
 
       
 
\t \t \t \t 
 
       //insert data on data_test_ins table 
 
       $sql="INSERT INTO `site_db`.`data_test_ins` (id,name , email, prod,quant) VALUES ('$id','$name','$email','$prod','$quant')"; 
 
       if(!mysqli_query($con,$sql)){ 
 
        echo mysqli_error($con); 
 
       } else{ 
 

 
        //Redirects to the specified page 
 
        header("Location: http://localhost/site/"); 
 
       } 
 
      } 
 
     } 
 
    } 
 
} 
 
?>

1

你在做什麼是不對。手動將數值添加到數據庫不是一種好方法。它應該由數據庫自動生成。我會推薦的是,添加另一個字段到你的data_test_ins表,例如:test_id,它指向你的data_test表的id。這是外鍵的概念。閱讀 有關外鍵here

的概念,現在您的代碼將是: -

<?php 

if(!empty($_POST["name"]) && !empty($_POST["email"]) && !empty($_POST["prod"]) && !empty($_POST["quant"])){ 

    //connect with database 
    include "database_conn.php"; 

    //get the form elements and store them in variables 

    session_start(); 
    $name=$_POST["name"]; 
    $email=$_POST["email"]; 
    $prod=$_POST["prod"]; 
    $quant=$_POST["quant"]; 

    //insert data on data_test table 
    $sql="INSERT INTO `site_db`.`data_test` (`name` , `email`, `prod`,`quant`) VALUES ('$name','$email','$prod','$quant')"; 
    if(!mysqli_query($con,$sql)){ 
     echo mysqli_error($con); 
    } else{ 

     //retrieve data 

     $sql = "SELECT data_test_id FROM data_test WHERE prod='$prod'"; 
     $result = mysqli_query($con,$sql); 
     if(!$result){ 
      echo mysqli_error($con); 
     } else{ 
      while($value = mysqli_fetch_object($result)){ 
       $id = $value->id; 

       //insert data on data_test_ins table 
       $sql="INSERT INTO `site_db`.`data_test_ins` (`id`,`name` , `email`, `prod`,`quant`, `test_id`) VALUES ('$name','$email','$prod','$quant', '$id')"; 
       if(!mysqli_query($con,$sql)){ 
        echo mysqli_error($con); 
       } else{ 

        //Redirects to the specified page 
        header("Location: http://localhost/site/"); 
       } 
      } 
     } 
    } 
    } 
?> 
當然
+1

它能夠更好地使用這種方法,因爲 – Mohammad

+0

謝謝你們爲您responces分貝最佳實踐! :-)我明白了,你有權利!但我爲了測試目的而這樣做,因爲我基本上希望稍後將該值插入到數據庫中的另一個表中,但在erp上。所以我可以將輸入的值傳遞給erp。 – Alex4842

相關問題