PHP PDO и хранимая функция - PullRequest
       1

PHP PDO и хранимая функция

0 голосов
/ 15 января 2011

Я только начал изучать php pdo, подключился к базе данных mysql и выполнил простую инструкцию SELECT.У меня есть сохраненная функция, которую я создал перед использованием pdo. Нужно ли мне использовать хранимые функции / процедуры при использовании PDO?

BEGIN 

  DECLARE new_username VARCHAR(32); 

    SELECT `username` 
      INTO new_username 
      FROM `users` 
     WHERE `userID` = ID; 

RETURN COALESCE(new_username, 'Invalid ID'); 

END

Есть ли смысл использовать вышеуказанную функцию, если я делаю это?используя PDO?Функция будет расширена для других вариантов выбора и т. Д. У меня также есть проблема с вызовом функции с помощью PDO.

include ('connection.php');

$userID = 0;
$stmt = $db->prepare("SELECT username(:user_id)");
$stmt->bindParam(':user_id', $userID, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_OBJ);
echo $result->new_username;

Любой совет?

1 Ответ

2 голосов
/ 15 января 2011

Для хранимой процедуры вам нужно немного изменить синтаксис.Обратите внимание, что длина должна быть включена.

<?php
$userId = "0"; //This deeclares it a String FYI not an Int in technical terms...
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $userId, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000)

// call the stored procedure
$stmt->execute();

print "procedure returned $return_value\n";
?>

Подробнее см. http://php.net/manual/en/pdostatement.bindparam.php.

В ответ на вопрос, стоит ли использовать ... это зависит.Если вы создаете функцию PHP, то есть getUserName ($ id), то нет, это того не стоит, вы можете использовать функцию PHP и изменять ее по мере продвижения ... Предполагая, что вы разрабатываете это для одного приложения PHP или с повторно используемым PHPclass.

Если вы хотите позволить людям, возможно, использовать API для его запуска и т. д. без вмешательства или если вы намереваетесь использовать этот запрос для нескольких приложений (например, PHP, ASP, а также, возможно, приложение для настольных компьютеров и т. д.).и т. д.) тогда лучше использовать MySQL в качестве места жительства.

Лично я предпочитаю функции PHP в случае, если вам нужно портировать базы данных и т. д., а также простоту добавления более сложной логики к результату запроса и т. д.и Функции для меня ограничены при рассмотрении миграции ...

Добавлено примечание - Процедуры и функции разные.Вы использовали оба имени.В этом случае я предполагаю из кода процедуру, но обязательно пойму, что вы используете и почему.Они предназначены для разных вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...