0

最も奇妙なことが起こった:

これは、PhpMyAdmin MySql インターフェイスで記述された私の SP です。

Begin
    /* event id and number of event's albums*/
    Declare eventId varchar(20);
    /*Declare numberOfAlbums int default 0;     */
    /* get event id */
    Set eventId = decodeEventCode(eventCode);

    If (eventKey Is Not Null And eventKey <> '' And getEventKey(eventId,facebookId) = eventKey) Then                
        /* get number of albums */
        /*Set numberOfAlbums = (Select Count(eventId) From Albums Where Event_Id = eventId);*/
        /* return active album */
        Select Users.Facebook_Id, Users.Facebook_Access_Token, Users.Facebook_Expires, getUserTime(facebookId) As User_Local_Time, Events.Name as Event_Name, Events.Place As Event_Place, Events.Start_Time, Events.End_Time, Albums.Album_Id, Albums.Number_Of_Pictures/*, numberOfAlbums As Album_Count*/
        From Albums
        Inner Join Events
        On Events.Event_Id = Albums.Event_Id
        Inner Join Users
        On Users.Facebook_Id = Events.Facebook_Id
        Where Albums.Event_Id = eventId
        Order By Albums.Number_Of_Pictures
        Limit 1;
        /* if no rows was found return 0*/      
        If (Found_Rows() = 0) Then      
            select 0 as status;
        End If;
    Else
        Select 0 as status;
    End If;
End

これは、PhpMyAdmin の「実行」ボタンを使用した結果がどのように見えるかです。インターフェイスが生成したクエリに注意してください。

を使った結果はこんな感じ

これは、私がコピー/貼り付けし、PhpMyAdmin SQL Query インターフェイスでテストするために使用した正確なクエリです。テーブルが見つからないというメッセージは何も選択しません。

これは、私がコピー/貼り付けし、PhpMyAdmin SQL Query インターフェイスでテストするために使用した正確なクエリです。テーブルが見つからないと言って何も選択しません...

これは私のphpコードからの私の呼び出しです:

/**
 * Get the current active event album with all his details
 * @param $eventCode string the event code of the event
 * @param $eventKey string the user's special event key
 * @param $facebookId string user's facebook id
 * @return array the details of the active album
 */
function getEventActiveAlbum($eventCode,$eventKey,$facebookId)
{
    return $this->queryDb("Call getEventActiveAlbum('$eventCode','$eventKey','$facebookId')");
}

クエリを生成するもの:

Call getEventActiveAlbum('10230910','42','613714903')

なぜこれが起こっているのですか?PHPコードからスクリプトを実行すると、何も返されません...

4

3 に答える 3

1

わかりました私はそれを解決しました:

問題は select ステートメントにありました。

結果がなかった場合 - この質問で説明されている問題が発生しましたが、結果があった場合は問題なく動作しました。

Select Count()次のように、複雑な select ステートメントを実行する必要があるかどうかを判断するために、ストアド プロシージャとユーザーを書き直しました。

Begin
    /* declare eventId and number of albums for this event */
    Declare eventId int;
    Declare numberOfAlbums int default 0;

    /*get event id */
    Set eventId = decodeEventCode(eventCode);
    /* if event id is valid, and event key is correct */
    If (eventId <> -1 And eventKey Is Not Null And getEventKey(eventId,facebookId) <> 0) Then
        /*count the number of albums in this event */
        Set numberOfAlbums = (Select Count(Album_Id) From Albums Where Event_Id = eventId); 
        /* if there are albums in these event - return the active one*/
        if (numberOfAlbums > 0) Then
            Select Events.Name as Event_Name, Events.Place as Event_Place, Events.Start_Time, Events.End_Time,
                   getUserTime(Users.Facebook_Id) as User_Local_Time, Users.Facebook_Id, Users.Facebook_Access_Token, Users.Facebook_Expires,
                    Albums.Album_Id, Albums.Number_Of_Pictures, numberOfAlbums as Albums_Count
            From Albums
            Inner Join Events
            On Albums.Event_Id = Events.Event_Id
            Inner Join Users
            On Events.Facebook_Id = Users.Facebook_Id
            Where Albums.Event_Id = eventId
            Order By Albums.Number_Of_Pictures 
            Limit 1;
        /* if there are no albums in the event - return event details */
        Else
            Call getEventDetails(eventCode);
        End If;
    /* if the request is not valid - return 0 as status */
    Else    
        Select 0 as status;
    End If;     
End
于 2013-10-02T14:25:29.737 に答える
0

このような同様の問題が発生しました。区切り文字の問題が原因だと思います。phpMyadmin の代わりにオリジナルの mysql コンソールを使用してストアド プロシージャを作成してみてください。

于 2013-10-02T13:42:41.910 に答える