从php中的存储过程获取值
这是我的SP:从php中的存储过程获取值,php,mysql,codeigniter,stored-procedures,Php,Mysql,Codeigniter,Stored Procedures,这是我的SP: DELIMITER $$ CREATE DEFINER=FUNCTION `test`(p_begin varchar(10),p_end varchar(10),p_code varchar(2)) RETURNS varchar(10) CHARSET latin1 BEGIN DECLARE V_ADA VARCHAR(8); DECLARE V_LAST VARCHAR(8); DECLARE V_NIK VARCHAR(8); se
DELIMITER $$
CREATE DEFINER=FUNCTION `test`(p_begin varchar(10),p_end varchar(10),p_code varchar(2)) RETURNS varchar(10) CHARSET latin1
BEGIN
DECLARE V_ADA VARCHAR(8);
DECLARE V_LAST VARCHAR(8);
DECLARE V_NIK VARCHAR(8);
select NIK INTO V_NIK from absen where join_date >= p_begin and join_date<= p_end AND company_id=p_code ORDER BY NIK DESC LIMIT 1 ;
SET V_NIK=V_NIK+1;
return V_NIK;
END
结果是:
array(1) { [0]=> object(stdClass)#20 (1) { ["test("2007-01-01","2007-12-31", "1")"]=> string(7) "118" } }
我的问题是,我想从存储过程118中获取值,但我不知道如何将对象更改为字符串。如果需要将对象作为文本发送到其他地方的数据库、Javascript代码,根据具体情况,您可以选择序列化、json_编码、XML转换等等。尝试以下方法:
$query=$this->db->query("select test(\"$begin\",\"$end\", \"$code\")")->result();
// Cast object to array (also you can try get_object_vars() to do that)
$query = (array)$query[0];
// Get the last value from array (it the only on so it is OK)
echo end($query);
可能会有所帮助。是否可以将查询重写为选择测试“$begin”、“$end”、“$code”作为结果?还有,这不是很容易受到SQL注入的攻击吗?@raina77现在我得到这个objectCI\u DB\u mysql\u result19 8{[conn\u id]=>resource31类型mysql link persistent[result\u id]=>resource43类型mysql result[result\u array]=>array0{}[result\u object]=>array0{}[custom\u result\u object]=>array0{}[current\u row]=>int0[num rows]=>int1[row\u data]=>NULL}这如何回答这个问题?我不知道如何将对象更改为字符串……这取决于需求。他为什么要把这个物体变成一根绳子呢?哦,我想他是在享受他的音乐solution@raina77ow我想从3分钟前开始接受,但我必须等待:
$query=$this->db->query("select test(\"$begin\",\"$end\", \"$code\")")->result();
// Cast object to array (also you can try get_object_vars() to do that)
$query = (array)$query[0];
// Get the last value from array (it the only on so it is OK)
echo end($query);