2013-02-26 103 views
0

我有以下查询在本地工作,但在远程服务器上收到警告。Mysqli在远程服务器上得到警告,但在本地工作

$query_getMainPage = $conCreative->query("SELECT l.*, p.* FROM languagep l INNER JOIN pages p ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0"); 
$row_getMainPage = mysqli_fetch_assoc($query_getMainPage); 
$totalRows_getMainPage = mysqli_num_rows($query_getMainPage); 

我得到的警告是

警告:mysqli_fetch_assoc()预计参数1被mysqli_result,鉴于布尔...

它的第一次我用的MySQLi而不是MySQL的所以我想我在使用函数的方式上做错了什么。

+0

查看'$ row_getMainPage'通过'var_dump()'返回给你什么。 – Aborted 2013-02-26 06:15:13

+0

代码可能有些错误。看看这个。希望能帮助到你。 http://stackoverflow.com/questions/13247702/code-works-fine-on-localhost-but-not-on-remote-server – Kibz 2013-02-26 06:20:16

回答

0

当然,你没有做错什么,因为它在另一台服务器上工作。
它是导致错误的远程服务器环境。

但是,无论您使用的是mysql还是mysqli,您都应该做一件事 - 您必须检查查询结果并处理错误。
至少做这种方式:

$sql = "SELECT count(*) FROM languagep l INNER JOIN pages p 
     ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0"; 
$res = $con->query($sql) or trigger_error($con->error."[$sql]"); 
  • 所以,你会被告知MySQL错误的,并能够采取适当的行动。

但你的代码还有另一个问题 - mysqli。
不要使用mysqli。代替使用PDO
这将为您节省很多未来的头痛。

PDO是简单而强大的使用

第一,创建一个连接

$dsn = 'mysql:dbname=test;host=localhost;charset=utf8'; 
$opt = array(
    PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC 
); 
$pdo = new PDO($dsn, $user, $pass, $opt); 

然后用它来运行查询:

$sql = "SELECT count(*) FROM languagep l INNER JOIN pages p 
     ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0"; 
$sth = $pdo->prepare($sql); 
$sth->execute(); 
$totalRows = $sth->fetchColumn(); 

,如果你不仅需要计数,但所有的数据太:

$sql = "SELECT * FROM languagep l INNER JOIN pages p 
     ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0"; 
$sth = $pdo->prepare($sql); 
$sth->execute(); 
$data = $sth->fetchAll(); 
$totalRows = count($data); 
+0

非常感谢。很有帮助 – Neos 2013-02-26 09:18:13

相关问题