2014-01-15 57 views
0

我試圖編寫一個窗體,從MySQL數據庫獲取一些數據,其餘的我必須自己填寫客棧。問題是,在add.php女巫插入到MySQL不要從窗體中獲取數據。 我的代碼是:窗體不會發送數據到mysql

<form action="add.php" method="post"> 
       <table border="0px" align="center" width="300px"> 

       <tr align="center"> 
       <td><h2>Flight</h2></td> 
       <td><h2>Org</h2></td> 
       <td><h2>Dest</h2></td> 
       <td><h2>STD</h2></td> 
       <td><h2>ATD</h2></td> 
       <td><h2>Delay</h2></td> 
       <td><h2>NET</h2></td> 
       <td><h2>Gros</h2></td> 
       <td><h2>Core Material</h2></td> 
       <td><h2>ACS</h2></td> 
       <td><h2>Total sorted</h2></td> 

       </tr> 
       <?php 
$con = mysql_connect("localhost","db","pass") or die('Could not connect: ' .mysql_error()); 
mysql_select_db("db", $con) or die(mysql_error()); 
$q="SELECT flightnr, org, dest, std FROM flight"; 
$sql = mysql_query($q) or die("MySQL ERROR: ".mysql_error()); 
while($row = mysql_fetch_array($sql)) 
        { 
         $flightnr2 = $row['flightnr']; 
     $org2 = $row['org']; 
     $dest2 = $row['dest']; 
     $std2 = $row['std']; 
         } 
         ?> 
          <tr> 
          <td><input type="text" name="flightnr" value="<?php echo $flightnr2;?>" /></td> 
          <td><input type="text" name="org" id="org" value="<?php echo $org2;?>" /></td> 
          <td><input type="text" name="dest" id="dest" value="<?php echo $dest2;?>" /></td> 
          <td><input type="text" name="std" id="std" value="<?php echo $std2;?>" /></td> 
          <td><input type="time" name="adt" id="adt" placeholder="ATD"></td> 
          <td><input type="time" name="delay" id="delay" placeholder="Delay"></td> 
          <td><input type="int" name="net" id="net" placeholder="NET"></td> 
          <td><input type="int" name="gros" id="gros" placeholder="Gros"></td> 
          <td><input type="int" name="core" id="core" placeholder="Core Material"></td> 
          <td><input type="int" name="acs" id="acs" placeholder="ACS"></td> 
          <td><input type="int" name="tot" id="tot" placeholder="Total sorted"></td> 
          <td><input type="submit" value="Submit"></td> 
          </tr> 
         </table> 
         </form> 

add.php:

<?php 
    $con = mysql_connect("localhost","db","pass") or die('Could not connect: ' .mysql_error()); 
mysql_select_db("db", $con) or die(mysql_error()); 

$date = date("D-m-Y"); 
$flightnr = $_POST['flightnr']; 
$org = $_POST['org']; 
$dest = $_POST['dest']; 
$std = $_POST['dest']; 
$adt = mysql_real_escape_string($_POST['adt']); 
$delay = mysql_real_escape_string($_POST['delay']); 
$net = mysql_real_escape_string($_POST['net']); 
$gros = mysql_real_escape_string($_POST['gros']); 
$core = mysql_real_escape_string($_POST['core']); 
$acs = mysql_real_escape_string($_POST['acs']); 
$tot = mysql_real_escape_string($_POST['tot']); 

$sql="INSERT INTO fly (date, flightnr, org, dest, std, adt, delay, net, gros, core, acs, tot)VALUES('$date', '$flightnr', '$org', '$std', '$adt', '$delay', '$net', '$gros', '$core', '$acs', '$tot')"; 
$result=mysql_query($sql); 
if($result){ 
echo "Successful"; 
echo "<BR>"; 
} 
else { 
echo "ERROR"; 
} 
?> 

任何想法,我怎麼能得到它的工作...

+0

你在哪裏學來編程這樣的形式?我很好奇。我在Stack Overflow上看到了很多這樣的代碼,並且想知道人們在哪裏獲得它們的引用。 – tadman

+0

我在我的代碼中嘗試了幾件事情,刪除了som錯誤..,並得到了一些新的..:P我認爲我做了一些正確的..,並得到了信息,以add.php。但是當我運行該腳本時,我遇到了錯誤。有人可以看看這些文件,看看我做錯了什麼嗎? – xzibiz

回答

1

在add.php你正在檢查$行,而不是$ _POST。 它應該是:

if (isset($_POST['atd']) && isset($_POST['..']) && ...) 
{ 
    $values = Array($_POST['atd'], $_POST['..'], ...); 
    $values = array_map("mysql_real_escape_string", $values); 
    $sql = "INSERT INTO fly (date, flightnr, org, dest, std, adt, delay, net, gros, core, asc, tot) VALUES ('" . implode(',', $values) . "');"; 
} 

反正因爲MySQL已經過時,你應該使用PDO或MySQLi的。

+1

你**必須逃脫。你在這裏做什麼是魯莽的。 – tadman

+0

你能編輯我的文章添加逃生嗎? – AleVale94

+2

最初的問題是自由使用'mysql_real_escape_string',這是你應該做的最不重要的事情,並且你已經以某種方式刪除了它並引入了一個巨大的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman

0

有很多懷念和拼寫錯誤的在這裏..看看這個:

echo '<td><input type="int" name="acs" id="acs" placeholder="ACS"></td>' 

$asc = mysql_real_escape_string($_POST['asc']); 

所以,你真的要讀你的代碼,並檢查拼寫。

這裏是一個更:

$dest = $row['dest'];

$std = $row['dest'];

這應該是這樣的:

$dest = $row['dest']; 
$std = $row['std']; 
0

在你的形式在您添加添加隱藏字段像 「> .php文件得到你的數據,如 $ flightner = $ _ POST ['flightnr']; 那麼火SQL查詢插入..

<input type="hidden" name="test" id="test" value="<?php echo $row['flightnr'];?>"/>   

嗨.. xzibiz 首先,你必須存儲的值$行[「flightnr」在具體的隱藏字段,然後使用$ _ POST [「測試」]到取實際值

$flightnr=$_POST['test'];  

錯誤原因... PHP只讀取它通過HTML輸入字段中發送這些數據,因此可以使用PHP服務器變量$ _REQUEST取從inputed場HTML那些值「html_input_field」]

+0

我已經閱讀過有關隱藏字段的內容,但是我找不到你的意思,如果我用$ flightnr = $ _ POST ['flightnr']取出數據,我會收到錯誤:Undefined index:flightnr – xzibiz

0

我得到它workin摹現在..我的新代碼:

$q="SELECT flightnr, org, dest, std FROM flight"; 
$sql = mysql_query($q) or die("MySQL ERROR: ".mysql_error()); 
while($row = mysql_fetch_array($sql)) 
        { 
     $flightnr2 = $row['flightnr']; 
     $org2 = $row['org']; 
     $dest2 = $row['dest']; 
     $std2 = $row['std']; 
         } 
         ?> 
          <tr> 
          <td><input type="text" name="flightnr" value="<?php echo $flightnr2;?>" /></td> 
          <td><input type="text" name="org" id="org" value="<?php echo $org2;?>" /></td> 
          <td><input type="text" name="dest" id="dest" value="<?php echo $dest2;?>" /></td> 
          <td><input type="text" name="std" id="std" value="<?php echo $std2;?>" /></td> 

add.php:

$date = date("D-m-Y"); 
$flightnr = $_POST['flightnr']; 
$org = $_POST['org']; 
$dest = $_POST['dest']; 
$std = $_POST['dest']; 
$adt = mysql_real_escape_string($_POST['adt']); 
$delay = mysql_real_escape_string($_POST['delay']); 
$net = mysql_real_escape_string($_POST['net']); 
$gros = mysql_real_escape_string($_POST['gros']); 
$core = mysql_real_escape_string($_POST['core']); 
$acs = mysql_real_escape_string($_POST['acs']); 
$tot = mysql_real_escape_string($_POST['tot']); 

$sql = "INSERT INTO fly ". 
"(date, flightnr, org, dest, std, adt, delay, net, gros, core, acs, tot) ". 
"VALUES ('$date', '$flightnr', '$org', '$dest', '$std', '$adt', '$delay', '$net', '$gros', '$core', '$acs', '$tot')"; 
$retval = mysql_query($sql, $con); 
if(! $retval) 
{ 
die('Could not enter data: ' . mysql_error()); 
} 
echo "Entered data successfully\n"; 
mysql_close($con); 

?>