PHP - 致命错误:无法在写入上下文中使用方法返回值

Posted

技术标签:

【中文标题】PHP - 致命错误:无法在写入上下文中使用方法返回值【英文标题】:PHP - Fatal error: Can't use method return value in write context 【发布时间】:2016-08-12 23:11:22 【问题描述】:

大家好,请帮助我,当我尝试连接我的数据库时遇到此错误。

致命错误:Can't use function return value in write context in C:\wamp\www\ipsem6\include\membersite_config.php on line 20

下面是我的代码`

$host="localhost";
$username="root";
$password="";
$link=mysqli_connect($host,$username,$password,"a8172058_portal");
if(isset($_POST["submit"]))
 
    $name=$_POST["name"];
    $email=$_POST["email"];
    $username=$_POST["username"];
    $pass=$_POST["password"];
    $contactno=$_POST["contact1"];
    $cont2=$_POST["contact2"];
    $dob=$_POST["date"];
    $role=$_POST["rle"];
    $gender=$_POST["s"];
    $qry="insert users          values('$name','$email','$username','$pass','$contactno','$cont2','$dob','$role','$gender')";
    $res=mysqli_query($link,$qry);
    if(mysqli_query_rows($link)=false)
    
        echo 'you have registered successfully';
    
    else
    
        echo 'registration failed';
    


?>` 

我检查了很多解决方案但无法理解它们,因为我在数据库编程方面不太好......! 请帮我解决它,因为我明天必须提交我的项目。 :/

【问题讨论】:

false 分配给mysqli_query_rows 确实没有意义...! 【参考方案1】:
if(mysqli_query_rows($link)=false)

您正试图在此处将值 false 分配给函数返回值。

PHP 中的 comparison 运算符是==

【讨论】:

【参考方案2】:

您必须使用此代码:

 if(mysqli_query_rows($link))

【讨论】:

【参考方案3】:
if(mysqli_query_rows($link)==false) 

代替:

if(mysqli_query_rows($link)=false)

== 用于检查值(比较运算符),= 是赋值运算符。

【讨论】:

【参考方案4】:

中的作业

if(mysqli_query_rows($link)=false)

没有意义;它应该是一个类型服从的比较运算符===

另外,没有这样的函数mysqli_query_rows()。也许您正在寻找mysqli_fetch_row() 或mysqli_num_rows()。 (但请注意,这些函数对结果标识符而不是数据库连接标识符进行操作。)

您正在执行 INSERT,因此将没有要获取的数据。相反,查询本身将在失败时返回 false,因此正确的表示应该是:

if($res!==false)

(请注意,我使用了不等式运算符,因为if 导致您分支到成功。)无论如何,成功和错误应该取决于对输入的测试,而不是插入操作本身。

最后但同样重要的是,您的脚本容易受到SQL injection 的攻击。

【讨论】:

以上是关于PHP - 致命错误:无法在写入上下文中使用方法返回值的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的 PHP 错误:'不能在写上下文中使用函数返回值'

PHP 致命错误:不在对象上下文中使用 $this

无法在上下文中使用 cuDNN 无,致命错误:cudnn.h:没有这样的文件或目录

致命错误:不在对象上下文错误中使用 $this [重复]

致命错误 LNK1168:无法打开 filename.mexw64 进行写入

致命错误:无法声明类错误,因为该名称已在使用中