Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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 获取错误“;类mysqli的对象无法转换为字符串;_Php_Mysqli - Fatal编程技术网

Php 获取错误“;类mysqli的对象无法转换为字符串;

Php 获取错误“;类mysqli的对象无法转换为字符串;,php,mysqli,Php,Mysqli,我是php新手。帮我解决这个问题。我已经尝试了网站上给出的所有解决方案。但它对我的代码不起作用 $query= "select * from login where username='$uname' and password= '$password'"; $result = mysqli_query("$query","$conn") or die(mysqli_error("$conn")); $row = mysqli_fetch_rows($result); if($row =

我是php新手。帮我解决这个问题。我已经尝试了网站上给出的所有解决方案。但它对我的代码不起作用

$query= "select * from login where username='$uname' and password= '$password'";    
$result = mysqli_query("$query","$conn") or die(mysqli_error("$conn"));

$row = mysqli_fetch_rows($result);
if($row == 1)
{

    $_SESSION['valid'] = $uname;

    header("location: welcomeuser.php");    
}

$conn
是一个对象。当您将变量放在引号中时

$result = mysqli_query("$query","$conn") or die(mysqli_error("$conn"));
它尝试将其转换为字符串,以便将其插入到带引号的字符串中。但这通常是无效的,除非类提供了转换方法;即使是这样,
msyqli_query()
mysqli_error()
也希望将对象作为它们的第一个参数,而不是字符串

应该是:

$result = mysqli_query($conn, $query) or die(mysqli_error($conn));
请注意,
mysqli\u query()
的参数顺序错误

也不需要在
$conn
周围加引号,因为它已经是一个字符串了


您还应该学会使用预先准备好的语句和参数,而不是将变量替换到SQL字符串中。

不要在
$conn
@IncredibleHat这个问题如何可以用相同的标题提问?添加@Barmar所说的内容:不要放置变量(例如
$query
)在字符串中,因为它们将尝试作为字符串而不是变量传递。您需要:
$query=“从用户名=”的登录名中选择*”$联塞特派团。“'和密码='”$暗语"';";     $结果=mysqli_查询($query,$conn)或die(mysqli_错误($conn))
@incredible标题可能相同,但问题和解决方案完全不同。不要再考虑明显的sql注入漏洞,在$query周围加引号,以纯文本形式存储密码,以及。。。