私は次のようなMySQL関数を持っています:
delimiter #
create function activate_user
(
p_activation_hash char(32)
)
returns int
deterministic
begin
declare v_ret int unsigned default 0;
if (char_length(p_activation_hash) != 32) then
return 0;
end if;
insert ignore into users (email, password_hash, first_name, last_name, company_name)
select email, password_hash, first_name, last_name, company_name
from user_activation
where activation_hash = p_activation_hash
and expiry_date > now();
return last_insert_id();
end #
delimiter ;
そして、CodeIgniterを使用してこのように呼び出すと:
$query = $this->db->query("select activate_user(?);", array($this->input->get('key')));
var_dump($query->result_object());
var_dump($query->result_array());
次のような結果の配列またはオブジェクトを取得できます。
array
0 =>
object(stdClass)[16]
public 'activate_user('5c9835e8dee7e1b43691708f503cb7f5')' => string '0' (length=1)
array
0 =>
array
'activate_user('5c9835e8dee7e1b43691708f503cb7f5')' => string '0' (length=1)
明らかに、キーが原因であまり使用できず、foreachを実行したくないので、より良い方法があるように思われますか?
mysql関数のポイントの大きな利点の1つは整数のようなものを返すことだと思いましたが、これらの整数を読むことはphpで厄介に思えます、私は何かが欠けていますか?
あなたの情報のために、これは私がそれを得た最も簡潔です:
$query = $this->db->query("select activate_user(?) as user_result;", array($this->input->get('key')));
$result = current($query->result_array());
echo "function result: " . $result['user_result'];