PHP,资源id#而不是实际字符串

PHP,资源id#而不是实际字符串,php,mysql,Php,Mysql,我在使用PHP在在线数据库中添加行的查询服务中遇到了一个问题。添加行就可以了。我从url中获取用户id和图书id,并获取图书的名称和要放入我添加到第三个也是最后一个表的行中的用户。 当我得到名字,把它们放在一个数组中,用json编码,然后回显,它就工作了。但当我把它们放在行中时,它会打印资源id#3和资源id#4,而不是名称。 有什么想法吗 这是我的服务: <?php $con = mysql_connect("localhost","root","root"); $userid=$_

我在使用PHP在在线数据库中添加行的查询服务中遇到了一个问题。添加行就可以了。我从url中获取用户id和图书id,并获取图书的名称和要放入我添加到第三个也是最后一个表的行中的用户。 当我得到名字,把它们放在一个数组中,用json编码,然后回显,它就工作了。但当我把它们放在行中时,它会打印资源id#3和资源id#4,而不是名称。 有什么想法吗

这是我的服务:

<?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";

?>

您实际上没有在此处检索用户名值:

$userName = mysql_query("SELECT Name...
$userName
只是查询返回的结果资源对象。稍后您确实会使用
mysql\u fetch\u object
,这是合适的,但随后您会尝试在插入查询中使用实际的结果资源:

$query1="INSERT into borrowed ...
它将转换为您看到的字符串。相反,您需要使用
$obj->Name
(将结果获取到
$obj
,并且可能只有一个结果)。如果有多个可能的结果,则必须在循环中执行该操作



请听关于您的问题的所有评论。

。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。在哪里会发生什么错误?当您将用户输入的值直接传递到查询中时,您的代码容易受到SQL注入的攻击。请参阅:。