Здравствуйте! В коде представленном ниже при выполнении мне выводиться сигнал об ошибке - у меня это "AAAA WHY?????" Собственно вопрос, почему? Почему второй раз коннекшн не выполняет запрос. Я могу привести код процедур если это важно, однако они выполняются в mysql (в оболочке HeidiSQL 7) на ура с точно такими же параметрами и синтаксисом, что я передаю ниже. Уже полтора часа бьюсь. Подскажите, пожалуйста, что не так. Код (PHP): function TryCheckLoginPassword($loginKey, $passwordKey) { $conn = Connect(); $user = $conn->real_escape_string($loginKey); $password = $conn->real_escape_string($passwordKey); $conn->select_db('test'); $query = 'call USERS_GET_USER_ID(\''.$user.'\',\''.$password.'\')'; if (!($q_result = $conn->query($query))) /*returns "id"*/ { $conn->Close; return false; } $row = $q_result->fetch_array(); if ($row === NULL) { $conn->Close; return false; } $ret['UserID'] = $row['id']; $ret['UserName'] = $user; $rights = array(); $query2 = 'call USERS_GET_USER_RIGHTS(' . $ret['UserID'] . ')'; if (!($q_result2 = $conn->query($query2))) /*returns "rightname, rightvalue"*/ { $conn->Close; echo "AAAA WHY?????"; return false; } while (($row2 = $q_result2->fetch_array()) != NULL) { $rights[] = array($row2['rightname'], $row2['rightvalue']); } $ret['Rights'] = $rights; $conn->Close; return $ret; }
Привет! Задачу уже решил так: Код (PHP): function TryCheckLoginPassword($loginKey, $passwordKey) { $conn = Connect(); $user = $conn->real_escape_string($loginKey); $password = $conn->real_escape_string($passwordKey); $conn->select_db('test'); if ($stmt = $conn->prepare("call USERS_GET_USER_ID(?,?)")) { $stmt->bind_param('ss', $user, $password); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($Result); while ($stmt->fetch()) { $ret['UserID'] = $Result; $ret['UserName'] = $user; } $stmt->free_result(); $stmt->close(); while ($conn->next_result()) {} } $rights = array(); if ($stmt = $conn->prepare("call USERS_GET_USER_RIGHTS(?)")) { $stmt->bind_param('i', $ret['UserID']); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($rightname0, $rightvalue0); while ($stmt->fetch()) { $rights[] = array($rightname0, $rightvalue0); } $stmt->free_result(); $stmt->close(); while ($conn->next_result()) {} } $ret['Rights'] = $rights; $conn->close(); return $ret; } Насколько понял, если бы были простые запросы - не хранимые процедуры - то в первом посте все нормально сработало бы.