簡體   English   中英

函數名稱必須是字符串錯誤

[英]Function name must be a string error

我得到這個錯誤

致命錯誤:函數名稱必須是第32行/home/an011500/www_root/nastavenia.php中的字符串

你能幫我解決這個問題嗎?

編輯:整個代碼

php_functions.php文件

 <?php


  function check_username($user_name)
    {
    require('PDO_DB_connect.php');
    $sql_query1= "SELECT username FROM user WHERE username=:username";
    $query1 = dbConnect()->prepare($sql_query1);
    $query1->bindParam(':username', $user_name);
    $query1->execute();
    if($query1->rowCount() == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
    }
    ?>

nastavenia.php文件

    <?php
session_start();
if(isset($_SESSION['username']))
{
    $session_set = true; 
}
elseif(!isset($_SESSION['username']))
{
    header("location: index.php");
    $session_not_set = true;
}

require('PDO_DB_connect.php');
require('php_functions.php');

$user_name = osetri_string($_POST['username']);
$email = osetri_string($_POST['email']);
$password = osetri_string($_POST['password']);
$confirm_password = osetri_string($_POST['password1']);
$actual_password = osetri_string($_POST['actual_password']);


if(isset($_POST['submit']))
{
    if(isset($_POST['actual_password']))
    {
        if(check_username($user_name) === true)
        {
           if(isset($_POST['username_radio_button']))
            {
            $prepared_username_sql_query = "UPDATE user SET username=:username WHERE username=:actual_username AND password=:actual_password";
            $username_sql_query($prepared_username_sql_query);
            $username_sql_query->bindParam('username' ,$user_name);
            $username_sql_query->bindParam('actual_username' ,$_SESSION['username']);
            $username_sql_query->bindParam('actual_password' ,$actual_password );
            if($username_sql_query->execute())
               {
                $user_info = "not a fail?";
               }
            }
        }
        else
        {
            $username_error = "fail";
        }
    }
}

?>

我的帖子主要是代碼? 精細。 XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

您正在嘗試調用存儲在$username_sql_query的函數名稱...

$username_sql_query($prepared_username_sql_query);

但是在下一行中,您將相同的變量稱為對象...

$username_sql_query->bindParam('username' ,$user_name);

如果$username_sql_query是一個對象,那么第一行也應該是一個方法調用。

我還會在這里給出一些元建議 - 當PHP告訴你確切哪條線有問題時,你發布了很多代碼。 如果你研究了那一行,並且可能轉儲變量以查看它們是否包含了你所期望的變量,那么你可以在更短的時間內解決這個問題,而不是讓我寫下這段話:)

好吧,看起來我的評論有助於回答你的問題......這就是為后來想知道的人解決問題的原因。 如果你接受這個作為答案,我們將不勝感激。

$username_sql_query =dbConnect()->prepare("UPDATE user SET username=:username WHERE username=:actual_username AND password=:actual_password");
$username_sql_query->bindParam(':username' ,$user_name);
$username_sql_query->bindParam(':actual_username' ,$_SESSION['username']);
$username_sql_query->bindParam(':actual_password' ,$actual_password );

綁定參數時,OP使用'username'而不是':username'以及'actual_username'和'actual_password',而不是在它們之前加上冒號。

現在它可以工作,我在代碼中有很多錯誤,比如不包括:bindParam中的用戶名

所以..現在我的代碼看起來像這樣,它的工作原理......

if(isset($_POST['submit']))
{
    if(isset($_POST['actual_password']))
    {
        if(check_username($user_name) === true)
        {
           if(isset($_POST['username_radio_button']))
            {
            $username_sql_query =dbConnect()->prepare("UPDATE user SET username=:username WHERE username=:actual_username AND password=:actual_password");
            $username_sql_query->bindParam(':username' ,$user_name);
            $username_sql_query->bindParam(':actual_username' ,$_SESSION['username']);
            $username_sql_query->bindParam(':actual_password' ,$actual_password );
            if($username_sql_query->execute())
               {
                $user_info = "not a fail?";
               }
            }
        }
        else
        {
            $username_error = "fail";
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM