[英]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.