2013-08-03 40 views
0

我正在構建一個簡單的錯誤跟蹤工具。 您可以創建新的項目,當你創建一個項目,你必須填寫一張表格,該表格員額project.class.php(這是該代碼)顯示來自特定ID的行數據

$name  = $_POST['name']; 
$descr  = $_POST['description']; 
$leader  = $_POST['leader'];  
$email  = $_POST['email']; 

$sql="INSERT INTO projects (name, description, leader, email, registration_date) 
VALUES ('$name', '$descr', '$leader', '$email', NOW())"; 

$result = mysql_real_escape_string($sql); 
$result = mysql_query($sql); 

if($result){ 
header('Location: ../projectpage.php?id='.mysql_insert_id()); 
} 
else { 
echo "There is something wrong. Try again later."; 
} 

mysql_close(); 

(它尚未sql注入證明,遠離完整...)

最終你會被重定向到唯一的項目頁面,該頁面鏈接到存儲在MySQL數據庫中的id。我想在頁面上顯示該項目的名稱,但它始終顯示數據庫中第一個項目的名稱。

(這裏我選擇MySQL數據庫中的數據。)

$query = 'SELECT CONCAT(name) 
AS name FROM projects'; 

$result = mysql_real_escape_string($query); 
$result = mysql_query ($query); 

(在這裏我告訴我的網頁上該項目的名稱,但它總是在MySQL數據庫的第一個項目的名稱)

<?php 
    if ($row = mysql_fetch_array ($result)) 
     echo '<h5>' . $row['name'] . '</h5>'; 
    ?> 

如何顯示正確的項目名稱?與id鏈接的那個? 我有用在哪裏....?

+0

是的,你必須使用其中: 'WHERE id =?' –

+0

你的表格聲明中甚至有id嗎? –

+0

@Tobias Kun然後我總是得到這個錯誤 警告:mysql_fetch_array()期望參數1是資源,布爾給定 –

回答

-1

的可能的援助:

你目前assing查詢字符串參數projectpage.php?id=

當您訪問的查詢字符串參數這樣的頁面的SQL必須拿起和過濾:

$query = 'SELECT CONCAT(name) AS name FROM projects WHERE projectid ='. $_GET["id"]; 

$result = mysql_real_escape_string($query); 
$result = mysql_query ($query); 

也可能在將結果賦值爲安全之後將mysql_insert_id()移動到右邊。

$result = mysql_query($sql); 
$insertId = mysql_insert_id(); 

然後,當你把它分配給查詢字符串只使用參數,也是

header('Location: ../projectpage.php?id='.$insertId); 
+0

怎麼樣的SQL注入?已棄用mysql_ *? ... –

+0

@ JLC007謝謝,但我仍然得到這個錯誤: –

+0

警告:mysql_fetch_array()期望參數1是資源,布爾給定 –

0

是的,你必須使用WHERE指定哪個項目你要得到。我也不確定爲什麼你只有一個項目時使用CONCAT功能。

其他重要的事情是,你必須在參數上使用mysql_real_escape_string()函數,然後才能將放到查詢字符串中。併爲您收到的特定類型的數據使用適當的功能。

所以你爲獲得該項目的語句應該是這樣的:

SELECT name FROM projects WHERE id = ' . intval($_GET['id'])

此外,當您使用mysql_fetch_assoc()函數之前,檢查是否有結果的任何記錄與

if(mysql_num_rows($result) > 0) 
{ 
    $project = mysql_fetch_assoc($result); 
    /* $project['name'] */ 
} 
+0

我仍然得到這個錯誤:警告:mysql_fetch_array()期望參數1是資源,布爾給定 –

+0

檢查添加的部分,並看看你的數據庫,插入類正在做一切按預期。檢查在這裏轉義查詢的正確用法:[link](http://www.php.net/manual/en/function.mysql-real-escape-string.php) –

0

試試這個

// first get the id, if from the url use $_GET['id'] 
$id = "2"; 
$query = "SELECT `name` FROM `projects` WHERE `id`='".intval($id). "'"; 
$result = mysql_query(mysql_real_escape_string($query)); 

使用mysql_fetch_row,在這裏你會不會通過每條記錄都循環,僅返回單行

// if you want to fetch single record from db 
// then use mysql_fetch_row() 
$row = mysql_fetch_row($result); 
if($row) { 
    echo '<h5>'.$row[0].'</h5>'; 
} 

$row[0]表明您選擇查詢提到的第一場,在這裏它的name