2013-06-27 71 views
1

尝试从mysql查询中检索一些信息,并打印出一个字符串,但无法理解问题,根据这里http://php.net/manual/en/function.mysql-result.php它应该是正确的,但它返回空。mysql查询结果到字符串返回nil

$sql = new mysqli('xxxx', 'xxxx', 'xxxxxx', 'xxxxx'); 
if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
exit; 
} 
echo " user id ", $user_id, "\n"; 
echo "event id ", $event_id, "\n"; 
$query ="SELECT A1.event_name,A1.start_date,A2.first_name,A2.last_name FROM OWN_EVENTS A1 INNER JOIN USERS A2 ON A1.event_id = $event_id WHERE A2.user_id=A1.user_id "; 
$result = $sql->query($query);  
if (!$result) { 
    sendResponse(417, json_encode("Query failed")); 
exit; 
} 
$row = mysql_fetch_row($result); 
echo "row[2] ", $row[2], "\n"; 
echo "row[3] ", $row[3], "\n"; 
//echo "result",$result,"\n"; 

$querySend ="SELECT email FROM USERS WHERE user_id = $user_id"; 
$resultSend = $sql->query($querySend);  
if (!resultSend) { 
    sendResponse(417, json_encode("Query failed")); 
exit; 
} 
$rowSend = mysql_fetch_row($resultSend); 
echo "rowSend[0] ", $rowSend[0], "\n"; 
echo $rowSend["email"]; 

LOG:

user id 8 
event id 95 

Warning: mysql_fetch_row() expects parameter 1 to be resource, object given in /var/insertToNotifications.php on line 180 
row[2] 
row[3] 

Notice: Use of undefined constant resultSend - assumed 'resultSend' in /var/insertToNotifications.php on line 187 

Warning: mysql_fetch_row() expects parameter 1 to be resource, object given in /var/insertToNotifications.php on line 191 
rowSend[0] 

结果在phpMyAdmin:

enter image description here

enter image description here

我的目标是能够打印出类似这样$body = "Hi,\n\n $row[2],$row[3] has invited you to $row[0] starting $row[1] \n\n \n\n ";

我该怎么做?

回答

1

您正在将mysqli_ *函数与已弃用的mysql_ *函数进行混合。要继续与mysqli的功能,让您的结果,像这样:

$query ="SELECT A1.event_name,A1.start_date,A2.first_name,A2.last_name FROM OWN_EVENTS A1 INNER JOIN USERS A2 ON A1.event_id = $event_id WHERE A2.user_id=A1.user_id "; 
$result = $sql->query($query);  
if (!$result) { 
    sendResponse(417, json_encode("Query failed")); 
exit; 
} 
$row = $result->fetch_row($result); 

这里是关于方法的文档,你可以在$result对象调用:http://www.php.net/manual/en/class.mysqli-result.php

+0

感谢您的答复,已经遵循链接,必须错过“我”部分 –

1

你混合的mysqli(请注意i)和mysql(注意iLACK)。这两个库是可互操作的,并且从一个平均值处理/结果是完全没有意义的。

你可能想

$row = mysqli_fetch_row($result); 
      ^---- 

,并可能不应该反正混合库的程序和面向对象的版本。选择一种风格并坚持下去。