У меня есть простая база данных MySQL 5, которая состоит из
- id - Int - первичный ключ
- userID - int
- projectId - int
- примечание - varchar (120)
И простое приложение Flex 4.5, в котором мне нужно найти в таблице userID все строки, принадлежащие определенному userID, и вернуть его в приложение Flex. Я использую ZendAMF по умолчанию для моего удаленного взаимодействия. В настоящее время мой класс выглядит так:
public function getAllBookmarksByUser($userId) {
$stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename WHERE userId=?");
$this->throwExceptionOnError();
mysqli_stmt_bind_param($stmt, 'i', $itemID);
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->id, $row->userId, $row->projectID, $row->note);
while (mysqli_stmt_fetch($stmt)) {
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->id, $row->userId, $row->projectID, $row->note);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
Но это не работает. Не возвращать никаких объектов при тестировании в Flash Builder 4.5, хотя я знаю, что записи находятся в БД.
Что я делаю не так?
Редактировать
Постскриптум - Это мобильное приложение Adobe Air ...
Редактировать
Я добавляю класс PHP в тот же файл, который работает отлично. Вот полный файл:
<?php
/**
* Get
*/
class BookmarksService {
var $username = "*SQLUserName";
var $password = "*SQLUserPassword*";
var $server = "*MySQLServerURL*";
var $port = "3306";
var $databasename = "mscoast";
var $tablename = "bookmarks";
var $connection;
/**
* Connect
*/
public function __construct() {
$this->connection = mysqli_connect(
$this->server,
$this->username,
$this->password,
$this->databasename,
$this->port
);
$this->throwExceptionOnError($this->connection);
}
/**
*Get All
*/
public function getAllBookmarks() {
$stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename");
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->id, $row->userId, $row->projectID, $row->note);
while (mysqli_stmt_fetch($stmt)) {
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->id, $row->userId, $row->projectID, $row->note);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
/**
* Get All By User ID
*/
public function getAllBookmarksByUser($userId) {
$stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename WHERE userId=?");
$this->throwExceptionOnError();
mysqli_stmt_bind_param($stmt, 'i', $itemID);
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->id, $row->userId, $row->projectID, $row->note);
while (mysqli_stmt_fetch($stmt)) {
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->id, $row->userId, $row->projectID, $row->note);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
/**
* Utility function to throw an exception if an error occurs
* while running a mysql command.
*/
private function throwExceptionOnError($link = null) {
if($link == null) {
$link = $this->connection;
}
if(mysqli_error($link)) {
$msg = mysqli_errno($link) . ": " . mysqli_error($link);
throw new Exception('MySQL Error - '. $msg);
}
}
}
?>
Первая функция работает отлично. Возвращает все строки. Во-вторых, не дает строк ...
Кроме того, вот мои запросы и ответы от Flash Builder 4.5 (могут или не могут быть полезны):
Запрос:
POST /app-resources/gateway.php HTTP/1.1
Referer: app:/Desktop.swf
Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5
x-flash-version: 10,2,153,1
Content-Type: application/x-amf
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows; U; en) AppleWebKit/531.9 (KHTML, like Gecko) AdobeAIR/2.6
Host: www.hidden.hmmmm
Content-Length: 268
Flex Message (flex.messaging.messages.RemotingMessage) operation = getAllBookmarksByUser clientId = null destination = BookmarksService messageId = A43315C8-6A13-4BAB-9F70-C78337A6AA5A timestamp = 0 timeToLive = 0 body = [ 0 ] hdr(DSId) = nil
Ответ:
HTTP/1.1 200 OK
Date: Mon, 21 Nov 2011 19:03:45 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.3
Cache-Control: no-cache, must-revalidate
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Content-Length: 289
Content-Type: application/x-amf
Flex Message (flex.messaging.messages.AcknowledgeMessage) clientId = 2FE53654-02C4-3548-136C-000066519473 correlationId = A43315C8-6A13-4BAB-9F70-C78337A6AA5A destination = null messageId = 5FCFFE5B-EBA5-2AE9-2A51-00005691367F timestamp = 132190222500 timeToLive = 0 body = []