2013-03-16 94 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,并且可能只有一个结果)。如果有多个可能的结果,则必须在循环中执行此操作。


听取您的问题的所有评论。

相关问题