mysql查询结果到字符串返回nil

时间:2013-06-27 14:49:00

标签: php mysql

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

$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 ";

之类的内容

我该怎么做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

你正在混合mysqli(注意i)和mysql(注意i LACK )。这两个库是 NOT 可互操作的,并且处理/结果从一个意味着绝对没有到另一个。

你可能想要

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

并且可能不应该混合库的过程版本和OOP版本。选择一种风格并坚持下去。