Я новичок в хранимых процедурах и использую mysql. Я создаю процедуры в phpmyadmin.хранимая процедура для каждой строки внешней хранимой процедуры
Что мне нужно для достижения - это хранимая процедура, которая вернет все данные пользователя из одной таблицы и связанные с ними отношения в таблицу ссылок.
мне нужен PHP веб-сервис для вызова процедуры и быть в состоянии вернуть JSON, подобный следующему:
{
"userID": "2222",
"userName": "mr x",
"userAddress": "street, town, County",
"userMobile": "1111",
"userPhone2": "2222",
"latitude": "53.2802937",
"longitude": "-9.0515995",
"relations": [
{
"relID": "3333",
"relFName": "Mr",
"relSName": "rel1",
"relAddress": "street2, town2, county2",
"relPhone": "3333",
"relPhone2": "3333",
"relType": "Brother"
},
{
"relID": "4444",
"relFName": "ms",
"relSName": "rel4",
"relAddress": "street 4, town 4, county 4",
"relPhone": "4444",
"relPhone2": "4444",
"relType": "Friend"
}
]
}
Я в настоящее время есть две хранимые процедуры, т.е.
getUsers:
BEGIN
SELECT * FROM Users ORDER BY userSName DESC;
END
and getRels:
BEGIN
SELECT * FROM relations WHERE relations.userID = UserIDParam;
END
Но я не уверен, как связать их, прежде чем использовать sps, у меня было два запроса. Внешняя полученная информация пользователя и внутренний запрос выполнялись для каждой строки в наборе результатов первого, то есть получения массива отношений для каждого пользователя. Однако, когда я переключился с базовых запросов на вызовы хранимых процедур, я получаю ошибку, что команды не синхронизированы.
Я не могу найти пример того, чего я пытаюсь достичь. Любая помощь приветствуется
UPDATE код PHP выглядит так:
$fetch = mysql_query("CALL getUsers();");
while ($row = mysql_fetch_array($fetch)){
$GetRelations_Query = "CALL getRels();";
$relations_results=mysql_query($GetRelations_Query);
$relations_arr = array();
while ($InnerRow = mysql_fetch_array($relations_results)){
$relationsReturned = array('relID' =>$InnerRow['personID'], 'relFName' => $InnerRow['FName'], 'relSName' => $InnerRow['SName'],
'relAddress' => $InnerRow['Address'], 'relPhone' => $InnerRow['Phone'], 'relPhone2' => $InnerRow['Phone2'], 'relType' =>
$InnerRow['relationship']);
array_unshift($relations_arr,$relationsReturned);
}
$row_array = array('userID' => $row['userID'], 'userName' => $row['userName'].' '.$row['userSName'], 'userAddress' => $row['userAddress'],
'userMobile' => $row['userMobile'],'userPhone2' => $row['userPhone2'], 'latitude' => $row['latitude'], 'longitude' => $row['longitude'], 'relations' => $relations_arr);
array_unshift($return_arr,$row_array);
}
и ошибка Warning: mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический дается со ссылкой на линии 'while ($InnerRow = mysql_fetch_array($relations_results)){'
. Я знаю, что когда я распечатываю ошибку, связанную с этим запросом, я извлекаю сообщение об ошибке, указанное выше, т.е. команды из синхронизации
Как выглядит таблица отношений? Похож на простое 'JOIN' для меня. – mwilczynski
Прошу прощения, похоже, это не то, о чем вы просите. Можем ли мы увидеть файл PHP для загрузки mysql? Кажется, это скорее проблема с PHP, а не освобождение результирующего набора на коннекторе. – mwilczynski
@m_wilczynski обновит вопрос – user2363025