2014-11-06 196 views
1

我試過每個版本的代碼,但它不工作。我有一個調用Post-PHP頁面的HTML表單來在數據庫中插入幾個字段。只有帶有直接文本的字段纔會添加,但通過參數$_POST發送的任何內容都是空的 - 無論我改變什麼內容都無法通過。PHP MySQL通過html表格插入查詢,參數不通過

HTML表單:

<html> 
<table><form method="post" action="input.php"> 
<tr><td>Post Title</td> 
<td><input type="text" name="fdt_post_title" size="20"></td></tr> 
<tr><td>Post URL</td><td><input type="text" name="fdt_post_url" size="40"></td></tr> 
<tr><td>Post Description</td><td><input type="text" name="fdt_post_desc" size="40"></td></tr> 
<tr><td>Post Title for FB</td><td><input type="text" name="fdt_post_title_fb" size="40"></td></tr> 
<tr><td>Image URL</td><td><input type="text" name="fdt_image_url_fb" size="40"></td></tr> 
<tr><td></td><td align="right"><input type="submit" name="submit" value="Submit"></td></tr> 
</form></table> 
</html> 

input.php頁:

<?php 
$dt_post_title = mysql_real_escape_string($_POST['$fdt_post_title']); 
$dt_post_url = mysql_real_escape_string($_POST['$fdt_post_url']); 
$dt_post_desc = mysql_real_escape_string($_POST['$fdt_post_desc']); 
$dt_post_title_fb = mysql_real_escape_string($_POST['$fdt_post_title_fb']); 
$dt_image_url_fb = mysql_real_escape_string($_POST['$fdt_image_url_fb']); 

$link = mysql_connect("localhost","root","");//database connection 
mysql_select_db("bighorn1_autoshare", $link); 

$now = date(); 

//inserting data order 
$order = "INSERT INTO topics 
(id, title, url, description, facebook_post, facebook_image, facebook_pubstatus, date_published) 
VALUES 
(DEFAULT, '$dt_post_title', '$dt_post_url', '$dt_post_desc', '$dt_post_title_fb',  '$dt_image_url_fb', '0', '$now')"; 

//declare in the order variable 
$result = mysql_query($order, $link); //order executes 
if($result){ 
echo("<br>Input data is succeed<br>"); 
} else { 
echo("<br>Input data is fail<br>"); 
} 
echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; 
?> 

在該表中,現場idPrimary, Not Null, Auto Increment。所有我得到的是id數量遞增以達到新的行下單,facebook_pubstatus0date_published as 0000-00-00 00:00:00`

-------------------------------------------------------------------------------------------------------------------------------- 
id | title | url | description | facebook_post | facebook_image | facebook_pubstatus | date_published  | 
-------------------------------------------------------------------------------------------------------------------------------- 
1 |   |  |    |     |     |    0  | 0000-00-00 00:00:00 | 
-------------------------------------------------------------------------------------------------------------------------------- 
2 |   |  |    |     |     |    0  | 0000-00-00 00:00:00 | 
-------------------------------------------------------------------------------------------------------------------------------- 

等等....

如果我更改爲(DEFAULT, '$dt_post_title', '$dt_post_url' .... ") like (DEFAULT, 'test String 1',......)中的直接字符串,則此文本沒有問題經過。

任何神奇可感,謝謝。

還強調這部分太多了,我的大腦沒有搞清楚現在的日期是什麼,爲什麼所有的零都是零。

謝謝

+2

請,或不使用'mysql_ *'功能(http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions- in-php),它們不再被維護,並且[已正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。學習[準備的語句](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://us1.php.net/pdo)或[MySQLi](http:// us1.php.net/mysqli)。 [本文](http://php.net/manual/en/mysqlinfo.api.choosing.php)將幫助你決定。 – 2014-11-06 20:10:39

+0

在打開'<?php tag error_reporting(E_ALL)'後立即向文件頂部添加錯誤報告; ini_set('display_errors',1);' – 2014-11-06 20:12:07

+0

謝謝@JayBlanchard我一定會考慮它。 – user2350586 2014-11-06 20:13:42

回答

3

您的變量中有一個額外的'$'符號。更改爲:

$dt_post_title = mysql_real_escape_string($_POST['fdt_post_title']); 
$dt_post_url = mysql_real_escape_string($_POST['fdt_post_url']); 
$dt_post_desc = mysql_real_escape_string($_POST['fdt_post_desc']); 
$dt_post_title_fb = mysql_real_escape_string($_POST['fdt_post_title_fb']); 
$dt_image_url_fb = mysql_real_escape_string($_POST['fdt_image_url_fb']); 
+0

謝謝@danmullen。愚蠢的問題,我想我問:)有時長時間工作時會發生。做得很好。 – user2350586 2014-11-06 20:14:46

2

您需要將link_identifier傳遞給您的mysql_real_escape_string。 http://php.net/manual/en/function.mysql-real-escape-string.php

MySQL連接。如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。如果沒有找到這樣的鏈接,它會嘗試創建一個,就好像調用mysql_connect()時沒有參數一樣。如果未找到或建立連接,則會生成E_WARNING級別錯誤。

返回轉義字符串,或錯誤時返回FALSE。

您現在可能在每個變量中都會得到「false」值。 試試這樣說:

$link = mysql_connect("localhost","root","");//database connection 
$dt_post_title = mysql_real_escape_string($_POST['fdt_post_title'], $link); 
$dt_post_url = mysql_real_escape_string($_POST['fdt_post_url'], $link); 
$dt_post_desc = mysql_real_escape_string($_POST['fdt_post_desc'], $link); 
$dt_post_title_fb = mysql_real_escape_string($_POST['fdt_post_title_fb'], $link); 
$dt_image_url_fb = mysql_real_escape_string($_POST['fdt_image_url_fb'], $link);