
[英]object of class mysqli _connect could not be converted to string in line 135
[英]Object of class mysqli could not be converted to string in line 5 [duplicate]
这个问题已经在这里有了答案:
我试图寻找与相同问题有关的问题,但无法获得适合我代码的解决方案。
我不断收到错误:
mysqli类的对象无法在第5行中转换为字符串
码:
<?php
function aggiornamento($utente) {
global $conn;
global $_CONFIG;
$selezione = mysqli_query ($conn, "SELECT * FROM ".$_CONFIG['db_account'].".account WHERE login = '".$utente."' LIMIT 1");
while ($account = mysqli_fetch_array($selezione)) {
$_SESSION['IShop_Login']= $account['login'];
$_SESSION['IShop_DR'] = $account['dr'];
$_SESSION['IShop_DB'] = $account['db'];
$_SESSION['IShop_AID'] = $account['id'];
$_SESSION['IShop_Admin'] = $account['Admin_IShop'];
}
}
?>
我从已经提出的问题中尝试了一些解决方案,但无济于事。 因此,我恳请您为我更正我的代码,并可能对正在发生的事情稍作解释,以便我学习。
我的$conn
:
$conn = mysql_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass']);
而$_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass']
定义为:
$_CONFIG['host'] = "SERVER IP";
$_CONFIG['user'] = "root";
$_CONFIG['pass'] = "PW";
最重要的是, $_CONFIG['db_account'] = "account";
。 但是我坚信问题不在于我的$conn
,我可能是错的。
您应该注意一些问题
mysqli
函数,但使用mysql_connect
完成mysql_connect
连接应该使用mysqli_connect
完成:
$mysql = mysqli_connect($host, $user, $password, $databaseName);
我不知道这有帮助吗?
General `mysqli` connection:
----------------------------
$host = 'localhost';
$uname = 'root';
$pwd = 'xxx';
$db = 'xxx';
$conn=new mysqli( $host, $uname, $pwd, $db );
function aggiornamento( $utente=false ){
global $conn;
global $_CONFIG;
if( !isset( $utente ) or empty( $utente ) ) return false;
$sql="select `login`,`dr`,`db`,`id`,`admin_ishop` from `{$_CONFIG['db_account']}`.`account` where `login`=? limit 1;";
$stmt=$conn->prepare( $sql );
$stmt->bind_param( 's', $param );
$param=$utente;
$result=$stmt->execute();
$stmt->bind_result( $login, $dr, $db, $id, $admin_ishop );
$stmt->fetch();
if( $result ){
$_SESSION['IShop_Login'] = $login;
$_SESSION['IShop_DR'] = $dr;
$_SESSION['IShop_DB'] = $db;
$_SESSION['IShop_AID'] = $id;
$_SESSION['IShop_Admin'] = $admin_ishop;
$stmt->close();
return true;
}
$conn->close();
return false;
}
<?php
include __DIR__.'\conn.php';
/*
Where conn.php is simply:
-------------------------
<?php
$host = 'localhost';
$uname = 'root';
$pwd = 'xxx';
$db = 'so_experiments';
$conn = new mysqli( $host, $uname, $pwd, $db );
?>
*/
/* Defined so as not to break sql stmt */
$_CONFIG['db_account']='so_experiments';
function aggiornamento( $utente=false ){
global $conn;
global $_CONFIG;
if( !isset( $utente ) or empty( $utente ) ) return false;
$sql="select `login`,`dr`,`db`,`id`,`admin_ishop` from `{$_CONFIG['db_account']}`.`account` where `login`=? limit 1;";
$stmt=$conn->prepare( $sql );
$stmt->bind_param( 's', $param );
$param=$utente;
$result=$stmt->execute();
$stmt->bind_result( $login, $dr, $db, $id, $admin_ishop );
$stmt->fetch();
if( $result ){
$_SESSION['IShop_Login'] = $login;
$_SESSION['IShop_DR'] = $dr;
$_SESSION['IShop_DB'] = $db;
$_SESSION['IShop_AID'] = $id;
$_SESSION['IShop_Admin'] = $admin_ishop;
/* only for demo debug */
echo 'login:', $login,', db:', $db,', dr:', $dr,', id:', $id,', admin_ishop:', $admin_ishop;
$stmt->close();
return true;
}
$conn->close();
return false;
}
/* call the function with a value for `$utente` = 'default' */
call_user_func( 'aggiornamento', 'default' );
/*
outputs:
login:default, db:store, dr:43, id:1, admin_ishop:1
*/
?>
您正在使用mysqli_query
但使用mysql_connect
,因此使用mysqli_connect()
您正在混合使用mysql和mysqli-functions,这已知会失败。
尝试将mysql_connect替换为mysqli_connect ,但请注意,它可能需要其他/附加参数。
另外,您应该重新考虑全局变量的用法。
尝试这个
<?php
function aggiornamento($utente){
global $conn;
global $_CONFIG;
$selezione = mysqli_query ($conn, "SELECT * FROM ".$_CONFIG['db_account'].".account WHERE login = '".$utente."' LIMIT 1");
while ($row = $selezione->fetch_assoc())
{
$_SESSION['IShop_Login']= $row['login'];
$_SESSION['IShop_DR'] = $row['dr'];
$_SESSION['IShop_DB'] = $row['db'];
$_SESSION['IShop_AID'] = $row['id'];
$_SESSION['IShop_Admin'] = $row['Admin_IShop'];
}
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.