2013-03-16 91 views
0

我在我的查詢服務期間運行一個問題,在PHP中的聯機數據庫中添加一行。該行的添加工作得很好。我從url中獲取用戶ID和書籍ID,並獲取書籍和用戶的姓名,以放入我添加到第三張和最後一張表格中的行。 當我得到的名字,把他們在一個數組中,JSON編碼,然後回聲它,它的作品。但是當我把它們放在行中時,它會打印資源ID#3和資源ID#4而不是名稱。 任何想法?PHP,資源ID#而不是實際字符串

這裏是我的服務:

<?php 

$con = mysql_connect("localhost","root","root"); 

$userid=$_GET['uid']; 
$id = $_GET['bookid']; 
$type = $_GET['type']; 
$zero = '0'; 
$one = '1'; 
$date = date("Y-m-d"); 

$arr = array(); 

if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
    echo "error connection"; 
} 

mysql_select_db("Jineel_lib",$con) or die("Could not select database"); 

$bkName = mysql_query("SELECT Name from books where ID='".$id."'"); 

$userName = mysql_query("SELECT Name from people WHERE User_ID='".$userid."'"); 


while($obj = mysql_fetch_object($userName)) 
{ 
    $arr[] = $obj;   
} 

echo json_encode($arr); 

if($type == 'borrow') 
{ 
    $query="UPDATE books set Availablity = '".$zero."' where ID= '".$id."' "; 
    mysql_query($query) or die (" borrow operation failed due to query 1"); 

    $query1="INSERT into borrowed (BookID, BookName, BorrowerID, BorrowedName, DateBorrowed, Extended, Returned) values('".$id."','".$bkName."','".$userid."','".$userName."','".$date."','".$zer‌​o."','".$zero."')"; 
    mysql_query($query1) or die (" borrow operation failed to due query 2"); 

    echo "borrow success"; 

} 

else if($type=='return') 

{ 
    $query="UPDATE books set Availablity = '".$one."' where ID= '".$id."' "; 
    mysql_query($query) or die (" return operation failed"); 

    $query1="UPDATE borrowed set Returned = '".$one."' where BookID= '".$id."' "; 
    mysql_query($query1) or die (" return operation failed 1"); 

    echo "return success"; 
} 

else 

echo "invalid parameters"; 

?> 

預先感謝您

+2

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – DCoder 2013-03-16 11:56:22

+1

究竟發生了什麼錯誤? – 2013-03-16 12:04:56

+0

當您將用戶輸入的值直接傳遞到您的查詢中時,您的代碼在SQL注入時很容易受到攻擊。請參閱:[Bobby Tables](http://bobby-tables.com)。 – insertusernamehere 2013-03-16 12:06:04

回答

0

你不會真的獲得用戶名值這裏:

$userName = mysql_query("SELECT Name... 

$userName只是結果資源對象返回來自查詢。你以後使用mysql_fetch_object,這是合適的,但你嘗試使用實際的結果資源在你的插入查詢:

$query1="INSERT into borrowed ... 

把它轉換到你看到的字符串。相反,您需要使用$obj->Name(您將結果存入$obj,並且可能只有一個結果)。如果有多個可能的結果,則必須在循環中執行此操作。


聽取您的問題的所有評論。

相關問題