2017-08-31 48 views
0

我想要從一個表中取出多行數據並根據用戶選擇,只將所選行存儲到另一個表中。從一個表中獲取多行並在php中存儲到另一個表Mysql

這段代碼的問題是來自'FLIGHTS'表的數據正在從數據庫中準確地獲取,但是當我試圖將它存儲到另一個'bookFlight'表中時,它僅爲所有列存儲NULL值。需要幫助!

<?php 

$username = "root"; 
$password = ""; 
$hostname = "localhost"; 
$dbhandle = mysql_connect($hostname, $username, $password) 
      or die("Unable to connect to MySQL"); 
$selected = mysql_select_db("dbtest",$dbhandle) 
      or die("Could not select dbtest"); 

session_start(); 

     ////// STORING DATA INTO TABLE 'bookFlight' //////// 

if(isset($_POST['Submit'])) 
{ 
     $company_name = mysql_real_escape_string($_POST['company_name']); 
     $flight_category= mysql_real_escape_string($_POST['flight_category']); 
     $rates   = mysql_real_escape_string($_POST['rates']); 
     $qry = "INSERT INTO bookFlight"."(company_name,flight_category,rates)". 
        "VALUES('$company_name','$flight_category','$rates')"; 

    $retval = mysql_query($qry, $dbhandle); 
    if(! $retval) { 
      die('<br><br> Could not enter data: ' . mysql_error()); 
     } 
     else { echo "Entered data successfully\n"; }    
} 
       ////// FETCHING DATA FROM TABLE 'flights' //////// 

$sql = "SELECT * FROM flights where type_id = 
             (SELECT type_id FROM tour WHERE city = 
            '{$_SESSION['destination_Address']}')"; 

$myData = mysql_query($sql,$dbhandle); 
$num = mysql_num_rows($myData); 

    echo "<table border=1> 
    <tr> 
    <th> COMPANY NAME : </th> 
    <th> FLIGHT CATEGORY : </th> 
    <th> RATES : </th> 
    </tr>"; 

for ($i=0; $i <$num; $i++) 
{ 
$record = mysql_fetch_array($myData,MYSQL_ASSOC); 
echo "<form method=post>"; 
    echo "<tr>"; 
    echo "<td>" . $company_name[]= $record['company_name']  ."</td>"; 
    echo "<td>" . $flight_category[]= $record['flight_category']."</td>"; 
    echo "<td>" . $rates[]= $record['rates']     ." </td>"; 
    echo "<td>" . "<input type='submit' name='Submit' value='SELECT'></td>"; 
    echo "</tr>"; 
} 
echo"</table>"; 
echo "</form>"; 

?> 
+0

您需要通過表單傳遞/發佈值。 –

+0

**警告**:如果您只是學習PHP,請不要學習過時的['mysql_query'](http://php.net/manual/en/function.mysql-query.php)界面。這很糟糕,並且已經在PHP 7中被刪除了。像[PDO不是很難學的東西](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-php-pdo- for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南有助於解釋最佳實踐。確保**你的用戶參數[妥善轉義](http://bobby-tables.com/php),否則你將以嚴重的[SQL注入漏洞](http://bobby-tables.com/ )。 – tadman

+0

在函數調用之外定義查詢也是您需要打破的習慣。將錯誤的字符串作爲參數傳遞是非常容易的,特別是當你在處理諸如'$ sql1','$ sql2'之類的東西時。將查詢字符串直接提供給函數完全消除了任何歧義。 – tadman

回答

0

那是因爲你不只是submit與形式發送任何東西,這就是爲什麼$_POST陣列無關除了submit值。

您需要與表單數據一起傳遞行ID(我假設ID在這種情況下列),這樣你可以在bookFlight表中插入特定行。

for ($i=0; $i <$num; $i++){ 
    $record = mysql_fetch_array($myData,MYSQL_ASSOC); 
    echo "<form action='?id=".$record['id']."' method='post'>"; 
    ... 
} 

而一旦用戶點擊提交按鈕,這是你如何INSERT數據。

if(isset($_POST['Submit'])){ 
    $qry = "INSERT INTO bookFlight (company_name, flight_category, rates) SELECT company_name, flight_category, rates FROM flights WHERE id = '".$_GET['id']."'"; 
    $retval = mysql_query($qry, $dbhandle); 
    if(! $retval) { 
     die('<br><br> Could not enter data: ' . mysql_error()); 
    }else { 
     echo "Entered data successfully\n"; 
    }    
} 

旁註:不要使用mysql_*功能,它們被棄用的PHP 5.5,並且在PHP 7.0完全刪除。改爲使用mysqlipdoAnd this is why you shouldn't use mysql_* functions

+0

好吧,謝謝它正在工作..但現在出現的錯誤是,它只存儲在WHERE id = 1,而不是其他id。現在我該怎麼做 ? – Sabah

+0

@Sabah請你詳細說明你的意思是什麼*它只存儲在WHERE id = 1而不是其他id *?此外,您必須在'for'循環中移動此結束語句「echo」「;'。 –

+0

OK謝謝!解決:)這是錯誤 – Sabah

相關問題