php函数中返回值的问题

php函数中返回值的问题,php,mysql,Php,Mysql,我是编程新手,尤其是php和MySQL。我必须为家庭作业创建动态网站。我的问题是下面的函数。我希望它通过给定的标记名(字符串)返回标记的int值。但在我的例子中,函数每次返回“1”。谁能帮我解决这个问题,谢谢 公共函数getTagIdByName(字符串$tagName):int { $statement=self::$db->prepare(“从标记中选择tags.id,其中tags.name=?”; $statement->bind_参数(“s”,$tagName); $result=$s

我是编程新手,尤其是php和MySQL。我必须为家庭作业创建动态网站。我的问题是下面的函数。我希望它通过给定的标记名(字符串)返回标记的int值。但在我的例子中,函数每次返回“1”。谁能帮我解决这个问题,谢谢

公共函数getTagIdByName(字符串$tagName):int { $statement=self::$db->prepare(“从标记中选择tags.id,其中tags.name=?”; $statement->bind_参数(“s”,$tagName); $result=$statement->execute(); 返回$result;
}问题在于您返回的是
execute()
的结果,但该函数实际上并没有给出您的查询结果。您需要在确保执行成功后获取结果

//don't forget to error-check before using query results
$statement->execute() or die($statement->error);
$result = $statement->get_result(); //retrieve results for processing

if(!$result->num_rows) return null;//if the id was not found in the DB    
else return $result->fetch_assoc()['id'];

你可以很容易地实现

$data = $result->fetch_assoc();
return $data['id']; // you can change with which you want to return with field name

使用
mysqli
prepared语句,您需要在获取之前将结果绑定到变量。参见示例。他使用的是
mysqli
,而不是
PDO
。修改答案时请告诉我,我将删除我的反对票。@Barmar我做了更改。你怎么知道OP使用了
mysqli
?因为他使用的是
$statement->bind_-param()
,而不是
$statement->bindParam()
。顺便说一句,如果你使用的是MYSQLND驱动程序,你只能在准备好的语句中使用
fetch_-assoc()
。否则,您需要使用
$statement->bind_result()