I have a simple MySQL 5 database that consists of
- id - Int - Primary Key
- userID - int
- projectId - int
- note - varchar (120)
And a simple Flex 4.5 app that I need to search the userID table for all rows belonging to a certain userID and return it to the Flex app. I'm using the default ZendAMF for my remoting. Currently my class looks like:
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;
}
But, it's not working. Not returning any objects when I test it in Flash Builder 4.5 even though I know the entries are in the db.
What am I doing wrong?
Edit P.S. - This is an Adobe Air mobile app...
Edit
I'm adding a PHP class within the same file that is working perfectly as well. Here is the full file:
<?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);
}
}
}
?>
The first function works perfectly. Returns all of the rows. The second, gives no rows...
Also, here are my requests and responses from Flash Builder 4.5 (may or may not be of some use):
Request:
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
Response:
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 = []