Провел несколько часов, чтобы найти ответ без успеха. Я написал пользовательскую функцию в MySQL, которая передала идентификатор, который он использует для извлечения различных фрагментов данных, объединил его в одну строку и вернул. Я хочу вызвать эту функцию с моей PHP-страницы и вывести результат.
Неудачные попытки включают:
1. $result = mysql_query("select functionName($id)"); 2. $sql = "select functionName($id)"; $result = mysql_query($sql, $link); 3. functionName($id)
Есть идеи?
1 и 2 близки, но $result
не будет содержать результат вызова функции. Скорее, он будет содержать файл cookie результата из запроса. Вы можете использовать этот файл cookie для получения фактических данных с помощью mysql_fetch_row()
. Вызов функции просто возвращает значение для оператора select, точно так же, как «SELECT 42» или «SELECT a FROM MyTable». Таким образом, чтобы получить результат, вы должны использовать тот же механизм, что и с любым другим SQL-запросом, который возвращает результаты; то есть использовать cookie и вызвать mysql_fetch_row()
. Таким образом, ваш окончательный код будет выглядеть так:
$result = mysql_query("select functionName($id)"); $row = mysql_fetch_row($result, $link); $returnValue = $row[0];
Обратите внимание: вы не хотите, чтобы интерполировать переменные напрямую в строку SQL (это может быть вектор для атак). Я предполагаю, однако, что этот код является просто целями.
У меня был такой же вопрос, и я нашел эту полезную запись из devx, особенно в нижней части о вызовах функций MySQL:
http://www.devx.com/webdev/Article/42887/0/page/2
Что касается mysqli, теперь мой код выглядит следующим образом:
$result = mysqli_query($sqlconnection,"SELECT functionName($id)"); $row = mysqli_fetch_row($result); return $row[0];
работает отлично.