Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/SQL-类mysqli_result的对象无法转换为字符串_Php_Sql_Mysqli_Fatal Error - Fatal编程技术网

PHP/SQL-类mysqli_result的对象无法转换为字符串

PHP/SQL-类mysqli_result的对象无法转换为字符串,php,sql,mysqli,fatal-error,Php,Sql,Mysqli,Fatal Error,我对网络编程相当陌生,但我知道很多。我正在创建一个私人消息传递系统,但遇到一个错误: Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\xampp\htdocs\message\send.php on line 26 代码如下: $check_conv=mysqli_query($con,"SELECT `hash` FROM `message_g` WHERE

我对网络编程相当陌生,但我知道很多。我正在创建一个私人消息传递系统,但遇到一个错误:

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\xampp\htdocs\message\send.php on line 26
代码如下:

$check_conv=mysqli_query($con,"SELECT `hash` FROM `message_g` WHERE (`user_one`='$my_id' AND `user_two`='$user') OR (`user_one`='$user' AND `user_two`='$my_id')");
我做错了什么,我已经检查过了,数据库中有值。另外,我已经检查过了,我正在全面使用mysqli,而不是混合使用mysql和mysqli。任何帮助都将不胜感激。谢谢

编辑:完整代码如下:

<?php 
if(isset($_POST['submit'])){
$myusername=$_SESSION['myusername'];
$random=rand();
$my_id=mysqli_query($con,"SELECT `id` FROM `users` WHERE (`username`='$myusername')");
$user=$_GET['user'];
$check_conv=mysqli_query($con,"SELECT `hash` FROM `message_g` WHERE (`user_one`='$my_id' AND `user_two`='$user') OR (`user_one`='$user' AND `user_two`='$my_id')");
if(mysqli_num_rows($check_conv) == 1){
    echo "<p>Conversation Already Started!</p>";
} else {
    mysqli_query("INSERT INTO `message_g` (`user_one`, `user_two`, `hash`) VALUES ('$my_id','$user','$random')");
    echo "<p>Conversation Started!</p>";
    }
}
?>

mysqli\u查询
返回一个对象。不能只打印对象。您需要阅读mysqli文档,以了解如何处理mysqli_查询对象的结果


这是你的问题。在这里,您可以执行一个查询并将其分配给$my_id,认为您从该列中获得了实际值,但实际上没有

$my_id=mysqli_query($con,"SELECT `id` FROM `users` WHERE (`username`='$myusername')");
然后在第二次调用中尝试将其插入字符串:

$check_conv=mysqli_query($con,"SELECT `hash` FROM `message_g` WHERE (`user_one`='$my_id' AND `user_two`='$user') OR (`user_one`='$user' AND `user_two`='$my_id')");
要让它工作,$my_id必须是一个字符串,但它不是。它是一个物体



另外,与您的问题无关,请注意,通过使用外部变量构建SQL语句,您将面临SQL注入攻击。此外,任何带有单引号的输入数据,如“O'Malley”名称,都将炸毁您的SQL查询。请了解如何使用参数化查询(最好是PDO模块)来保护您的web应用程序。我的网站有很多例子可以帮助您入门,并且有很多详细的例子。

请尝试在查询中直接使用的地方获取您的mysqli\u结果

$my_id_query=mysqli_query($con,"SELECT `id` FROM `users` WHERE (`username`='$myusername')");
//Fetch result 
$my_id_array=mysqli_fetch_assoc($my_id_query);
$my_id=$my_id_array['id'];
//Cast this into int to protect yourself against sql injection
$user=(int)$_GET['user'];
$check_conv=mysqli_query($con,"SELECT `hash` FROM `message_g` WHERE (`user_one`='$my_id' AND 
`user_two`='$user') OR (`user_one`='$user' AND `user_two`='$my_id')");
 if(mysqli_num_rows($check_conv) == 1){

这一行代码没有问题,你的问题不在这一行,也许在你使用$check_convwell的那一行,没有人能告诉你出了什么问题,只是看到这一行代码,没有魔术师,只有程序员:)是的,但是错误意味着什么。你在做一些事情,试图把对象变成字符串,你不能这么做。但是我们不知道,因为您没有向我们显示出现问题的代码行。您不能将结果转换为整数,您必须获取结果。检查我的答案。虽然我没有打印它,但之后我会检查行。我们怎么知道?我们看不到你的代码?您向我们展示了一行代码。将添加其余代码,一分钟。感谢您提供的提示,如果可以,我将给您代表。