2014-01-08 106 views
0

我試圖插入在PHP語句這樣如何包括PHP代碼

while($row = mysql_fetch_array($result)) 
    { 
    echo "<form id='send' action='up.php' method='POST'> 
    <tr> 
    <td>" . $row['s_no'] ."</td> 
    <td> <label for='student_name'><textarea name='student_name' >".$row['student_name']."</textarea></label></td> 
    <td> <textarea name='roll_no'>".$row['roll_no'].  "</textarea></td> 
    <td> <textarea name='company'>".$row['company'].  "</textarea></td> 
    <td> <textarea name='contact_no' >".$row['contact_no']. "</textarea></td> 
    <td> <textarea name='email'>" .$row['email'].  "</textarea></td> 
    </tr> 
    <input type='text' name='batch_name' disabled='disabled' size='7' value=" .$_POST['batch_name']. "> 
    <p align='center'><button id='submit' type='submit'>Update</button></p> 
    </form>"; 
    } 

I'have從數據庫中獲取的DATAS表格形式,把默認進入texareas,因此它的駕駛室de編輯。所以,我計劃用UDPDATE查詢,以這樣的交替:

<html> 
<title>Alumini Update</title> 
<head> 

<?php 
$con = mysql_connect("localhost","root","momsgift"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("alumini", $con); 

mysql_query("UPDATE $_POST[batch_name] SET contact_no = $_POST[contact_no] WHERE roll_no = '2321'"); 

mysql_close($con); 
?> 

但在發送一個查詢中textarea的犯規將數據加載到數據庫(但它重定向到up.php頁) 什麼情況是原因嗎?

+0

**危險**:您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068)並應使用[現代替換](http ://php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin

回答

0

您正在生成無效的HTML。

您不能將表格包裝在表格行周圍,也不能將表格包裝在整個表格中。

您的瀏覽器通過移動表單元素來恢復錯誤。這是意外結果的最可能原因。

在您生成的HTML上使用a validator

0

您的SQL查詢可能不正確

如果數據類型,如果roll_no是整數,那麼寫

  mysql_query("UPDATE $_POST 
      [batch_name] SET contact_no = 
      $_POST[contact_no] WHERE roll_no 
      = '2321'") or die(mysql_error()); 

赤爲SQL錯誤。

0

在您的MySQL更新查詢中,您只更新contact_no沒有其他字段。

而且你已經離開了您的查詢打開SQL注入

$batch_number = mysql_real_escape_string($_POST['batch_name']); 
$contact_no = mysql_real_escape_string($_POST['contact_no']); 
$student_name = mysql_real_escape_string($_POST['student_name']); 
$roll_no = mysql_real_escape_string($_POST['roll_no']); 
$company = mysql_real_escape_string($_POST['company']); 
$email = mysql_real_escape_string($_POST['email']); 

mysql_query("UPDATE ('" . $batch_no. "') 
SET contact_no = ('" . $contact_no . "'), 
student_name = ('" . $student_name. "'), 
company = ('" . $company . "'), 
email = ('" . $email . "'), 
WHERE roll_no = ('" . $roll_no . "')"); 

這(mysql_real_escape_string)將不會解決所有問題,並使用PDO是一種較好的方法,但它是一個很好的跳板。

0

首先寫這個,看看結果,如果它顯示的textarea的文本顯示的文本是正確的發送。問題是在你的SQL代碼。 echo $ _POST ['contact_no']; 然後你可以回顯查詢並複製並運行它在phpmyadmin和查看錯誤的SQL。

0
//EXAMPLE 1 

     if (isset($_POST['update'])) 
     {   
     $result = pg_query($db_con, "UPDATE mydbtable SET mydbrecord = '$_POST[my_var1]' WHERE mydbrecord_id = '$_POST[myfilterbyid_var]'"); 

     if (!$result) 
     { 
      echo "Update failed!!"; 
     } 
     else 
      { 
      echo "Update successfull!"; 
      } 
     } 


    //EXAMPLE 2 

<form name="display" action="" method="post"> 
<select name="mydropdown" action="test.php" method="post"> 
    <?php 
    while($row = pg_fetch_assoc) 
    { 
    echo "<option id=\"{$row['result_var']}\">{$row['result_var']}</option>"; 
    } 
?> 
</select> 
+0

示例1 - 基本上,我在這裏用my_var1(用戶輸入變量)在我的數據庫表(mydbtable)上更新數據庫記錄(mydbrecord),也是通過過濾另一個變量,在本例中是一個id字段(myfilterbyid_var)例如,通過先前的選擇。 示例2 - 一個標準的php從一個選擇結果變量的html變量 希望這會有所幫助。 祝你好運, – FilhoDumMocho

+0

PS-例2你有一段時間的選擇來生成選項,而有內容 – FilhoDumMocho