<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >sqlite_udf_decode_binary</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="SQLite Functions" HREF="ref.sqlite.html"><LINK REL="PREVIOUS" TITLE="sqlite_single_query" HREF="function.sqlite-single-query.html"><LINK REL="NEXT" TITLE="sqlite_udf_encode_binary" HREF="function.sqlite-udf-encode-binary.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="refentry" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP 手册</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="function.sqlite-single-query.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.sqlite-udf-encode-binary.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.sqlite-udf-decode-binary" ></A >sqlite_udf_decode_binary</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN218036" ></A ><P > (PHP 5)</P >sqlite_udf_decode_binary -- Decode binary data passed as parameters to an UDF</DIV ><DIV CLASS="refsect1" ><A NAME="AEN218039" ></A ><H2 >说明</H2 >string <B CLASS="methodname" >sqlite_udf_decode_binary</B > ( string data )<BR ></BR ><P > <B CLASS="function" >sqlite_udf_decode_binary()</B > decodes the binary encoding that was applied to the parameter by either <A HREF="function.sqlite-udf-encode-binary.html" ><B CLASS="function" >sqlite_udf_encode_binary()</B ></A > or <A HREF="function.sqlite-escape-string.html" ><B CLASS="function" >sqlite_escape_string()</B ></A >. </P ><P > You must call this function on parameters passed to your UDF if you need them to handle binary data, as the binary encoding employed by PHP will obscure the content and of the parameter in its natural, non-coded form. </P ><P > PHP does not perform this encode/decode operation automatically as it would severely impact performance if it did. </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN218053" ></A ><H2 >范例</H2 ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN218056" ></A ><P ><B >例 1. binary-safe max_length aggregation function example</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$data </font><font color="#007700">= array(<br /> </font><font color="#DD0000">'one'</font><font color="#007700">,<br /> </font><font color="#DD0000">'two'</font><font color="#007700">,<br /> </font><font color="#DD0000">'three'</font><font color="#007700">,<br /> </font><font color="#DD0000">'four'</font><font color="#007700">,<br /> </font><font color="#DD0000">'five'</font><font color="#007700">,<br /> </font><font color="#DD0000">'six'</font><font color="#007700">,<br /> </font><font color="#DD0000">'seven'</font><font color="#007700">,<br /> </font><font color="#DD0000">'eight'</font><font color="#007700">,<br /> </font><font color="#DD0000">'nine'</font><font color="#007700">,<br /> </font><font color="#DD0000">'ten'</font><font color="#007700">,<br /> );<br /></font><font color="#0000BB">$db </font><font color="#007700">= </font><font color="#0000BB">sqlite_open</font><font color="#007700">(</font><font color="#DD0000">':memory:'</font><font color="#007700">);<br /></font><font color="#0000BB">sqlite_query</font><font color="#007700">(</font><font color="#0000BB">$db</font><font color="#007700">, </font><font color="#DD0000">"CREATE TABLE strings(a)"</font><font color="#007700">);<br />foreach (</font><font color="#0000BB">$data </font><font color="#007700">as </font><font color="#0000BB">$str</font><font color="#007700">) {<br /> </font><font color="#0000BB">$str </font><font color="#007700">= </font><font color="#0000BB">sqlite_escape_string</font><font color="#007700">(</font><font color="#0000BB">$str</font><font color="#007700">);<br /> </font><font color="#0000BB">sqlite_query</font><font color="#007700">(</font><font color="#0000BB">$db</font><font color="#007700">, </font><font color="#DD0000">"INSERT INTO strings VALUES ('$str')"</font><font color="#007700">);<br />}<br /><br />function </font><font color="#0000BB">max_len_step</font><font color="#007700">(&</font><font color="#0000BB">$context</font><font color="#007700">, </font><font color="#0000BB">$string</font><font color="#007700">) <br />{<br /> </font><font color="#0000BB">$string </font><font color="#007700">= </font><font color="#0000BB">sqlite_udf_decode_binary</font><font color="#007700">(</font><font color="#0000BB">$string</font><font color="#007700">);<br /> if (</font><font color="#0000BB">strlen</font><font color="#007700">(</font><font color="#0000BB">$string</font><font color="#007700">) > </font><font color="#0000BB">$context</font><font color="#007700">) {<br /> </font><font color="#0000BB">$context </font><font color="#007700">= </font><font color="#0000BB">strlen</font><font color="#007700">(</font><font color="#0000BB">$string</font><font color="#007700">);<br /> }<br />}<br /><br />function </font><font color="#0000BB">max_len_finalize</font><font color="#007700">(&</font><font color="#0000BB">$context</font><font color="#007700">) <br />{<br /> return </font><font color="#0000BB">$context</font><font color="#007700">;<br />}<br /><br /></font><font color="#0000BB">sqlite_create_aggregate</font><font color="#007700">(</font><font color="#0000BB">$db</font><font color="#007700">, </font><font color="#DD0000">'max_len'</font><font color="#007700">, </font><font color="#DD0000">'max_len_step'</font><font color="#007700">, </font><font color="#DD0000">'max_len_finalize'</font><font color="#007700">);<br /><br /></font><font color="#0000BB">var_dump</font><font color="#007700">(</font><font color="#0000BB">sqlite_array_query</font><font color="#007700">(</font><font color="#0000BB">$db</font><font color="#007700">, </font><font color="#DD0000">'SELECT max_len(a) from strings'</font><font color="#007700">));<br /><br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN218059" ></A ><H2 >参见</H2 ><P > <P ></P ><TABLE BORDER="0" ><TBODY ><TR ><TD ><A HREF="function.sqlite-udf-encode-binary.html" ><B CLASS="function" >sqlite_udf_encode_binary()</B ></A ></TD ></TR ><TR ><TD ><A HREF="function.sqlite-create-function.html" ><B CLASS="function" >sqlite_create_function()</B ></A ></TD ></TR ><TR ><TD ><A HREF="function.sqlite-create-aggregate.html" ><B CLASS="function" >sqlite_create_aggregate()</B ></A ></TD ></TR ></TBODY ></TABLE ><P ></P > </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="function.sqlite-single-query.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >起始页</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.sqlite-udf-encode-binary.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >sqlite_single_query</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.sqlite.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >sqlite_udf_encode_binary</TD ></TR ></TABLE ></DIV ></BODY ></HTML >