2013-03-04 67 views
-1

我試圖顯示從我的數據庫表中選擇'數據'的數據。 該查詢執行,但當我回聲我沒有得到任何結果。你能幫我解決這個問題嗎?從mysql_fetch_array回顯數據

<?php include 'includes/connection.php'; ?> 
<html> 
<head> 
<title> </title> 
</head> 
<body> 
<?php 
if(isset($_POST['submitted'])){ 
$sql = "SELECT * FROM dagtaken WHERE datum = $_POST[datum]"; 

$result = mysql_query($sql) or die (mysql_error()); 
while ($row = mysql_fetch_array($result)){ 
echo $row['aantal']; 
} 
}else{ 
?> 
<form action='' method='POST'> 
<p><input type="date" name="datum"></p> 
<p><input type='submit' value='Dagtaak toevoegen' /> 
<input type='hidden' value='1' name='submitted' /></p> 
</form> 
<?php } ?> 
</body> 
</html> 
+1

尼斯[SQL注入漏洞](http://bobby-tables.com)。享受你的服務器pwn3d。 – 2013-03-04 14:44:25

+0

儘可能遠離mysql方法。使用[PDO](http://php.net/manual/en/book.pdo.php)或[mysqli](http://php.net/manual/en/book.mysqli.php)。你的代碼中是否有任何警告或錯誤信息? – christopher 2013-03-04 14:44:28

+0

另外如果你需要調試你的代碼那麼打印變量內容呢?嘗試把這個放入循環'var_export($ row);' – Kyborek 2013-03-04 14:45:23

回答

1

查詢不應該執行,因爲日期顯然是字符串,需要引號。這就是說......

xkcd

試試這個:在

mysql_query("SLEECT * FROM `dagtaken` WHERE `datum`='".mysql_real_escape_string($_POST['datum'])."'"); 

我們的實際問題,你正在檢查if(isset($_POST['submitted'])),但無處我在你的源(編輯看到<input name="submitted"決不介意,它有一個愚蠢的空白推動它的邊緣)。嘗試if(isset($_POST['datum'])),因爲這是你實際使用的變量。

+0

他也可以簡單地檢查'if(isset($ _ POST))'? – Kyborek 2013-03-04 14:48:16

+0

即使請求是「GET」,也設置'$ _POST'。這將是一個空陣列。 – 2013-03-04 14:48:37

+0

謝謝,這工作。完全忘了那個哈哈。 – Kesoria 2013-03-04 14:56:19

0

您還沒有命名您的提交按鈕,讓你的PHP代碼中從來沒有踢,不檢查表單字段時,你真正需要的是檢查是否有POST已發生。

你的代碼快速修復:

<input type="submit" name="submitted" value="Dagtaak toevoegen" /> 
        ^^^^^^^^^^^^^^^^^ 

更好的解決辦法:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    your code here ... 
} 
+0

他有隱藏的輸入名爲'「提交」# – Kyborek 2013-03-04 14:46:29

+0

@kyborek:啊,水平滾動的樂趣... – 2013-03-04 14:47:12

0

首先,讓您遠離數據。 SQL注入現在很容易

其次,你有數據在你的數據庫? 嘗試的print_r取代echo $行($行)...

$ _ POST是用引號... => $ _ POST [ 「基準」] 最後此外,是你日期與您的輸入?

+0

我知道我應該先逃離我的字符串,但我跳過了,因爲我想先讓它工作。插入轉義字符串,謝謝你的回答。 – Kesoria 2013-03-04 14:57:24