Как использовать пользовательскую функцию MySQL из PHP? - PullRequest
3 голосов
/ 25 января 2011

Потратил несколько часов на поиски ответа безуспешно. Я написал пользовательскую функцию в MySQL, которой передается идентификатор, который он использует для извлечения различных фрагментов данных, объединения их в одну строку и возврата. Я хочу вызвать эту функцию со своей страницы PHP и вывести результат.

Неудачные попытки включают в себя:

1. $result = mysql_query("select functionName($id)"); 

2. $sql = "select functionName($id)";
   $result = mysql_query($sql, $link);

3. functionName($id) 

Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 января 2011

1 и 2 близки, но $result не будет содержать результат вызова функции. Скорее, он будет содержать файл cookie результата запроса. Вы можете использовать этот файл cookie для получения фактических данных, используя mysql_fetch_row(). Вызов функции просто возвращает значение для оператора select, точно так же, как «SELECT 42» или «SELECT a FROM MyTable». Таким образом, чтобы получить результат, вы должны использовать тот же механизм, что и в любом другом запросе SQL, который возвращает результаты; то есть, используйте куки и позвоните mysql_fetch_row(). Итак, ваш окончательный код будет выглядеть так:

$result = mysql_query("select functionName($id)");
$row = mysql_fetch_row($result, $link);
$returnValue = $row[0];

Обратите внимание, что вы не хотите интерполировать переменные непосредственно в строку SQL (это может быть вектором для атак). Я предполагаю, однако, что этот код только для примера.

0 голосов
/ 26 января 2017

У меня был тот же вопрос, и я нашел эту очень полезную запись из 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];

отлично работает.

...