2015-02-11 22 views
1

我最近对一个正在处理的站点做了很多更改,并且通过整个项目替换了与数据库交互的旧mysql_方法。在这个特定的脚本我很难让它工作相同。将我的php脚本转换为mysqli的问题

旧代码

$checkinfo = mysql_query("SELECT * FROM `myusers` WHERE `userid` = '$uid' LIMIT 1") or die(mysql_error()); 

if(mysql_num_rows($checkinfo) < 1){ //log and die if user isnt in db 
    die("Incident has been logged!"); } 

$myinfo = mysql_fetch_assoc($checkinfo);  

和我的新代码

$checkinfo = $mysqli->query("SELECT * FROM `myusers` WHERE `userid` = '$uid' LIMIT 1") or die('Error : ('. $mysqli->errno .') '. $mysqli->error); 

if($checkinfo->fetch_row() < 1){ 
    die("Incident has been logged!"); } 

$myinfo = $checkinfo->fetch_assoc(); 

现在它根本就没有设定我的代码的其余部分阵列......请您指出我的愚蠢!谢谢

+0

'“去通了整个项目新老交替mysql_方法”'请你帮个忙和抽象你的数据库访问到一个类,那么当你需要进一步做变化,你只需要在一个地方做到这一点 – Steve 2015-02-11 10:27:07

回答

3

通过使用->fetch_row(),它已经喂了第一行。由于您明确设置了LIMIT 1,因此下一次获取调用的结果为NULL

将其更改为->num_rows代替:

$checkinfo = $mysqli->query("SELECT * FROM `myusers` WHERE `userid` = '$uid' LIMIT 1") or die('Error : ('. $mysqli->errno .') '. $mysqli->error); 

if($checkinfo->num_rows < 1){ 
    die("Incident has been logged!"); // change this to something more meaningful. 
} 

$myinfo = $checkinfo->fetch_assoc();