<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.mysqli.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'mysqli.quote-string.php',
    1 => 'mysqli::quote_string',
    2 => 'Quotes and escapes a string for use in an SQL statement',
  ),
  'up' => 
  array (
    0 => 'class.mysqli.php',
    1 => 'mysqli',
  ),
  'prev' => 
  array (
    0 => 'mysqli.query.php',
    1 => 'mysqli::query',
  ),
  'next' => 
  array (
    0 => 'mysqli.real-connect.php',
    1 => 'mysqli::real_connect',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'en',
    'path' => 'reference/mysqli/mysqli/quote-string.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqli.quote-string" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">mysqli::quote_string</h1>
  <h1 class="refname">mysqli_quote_string</h1>
  <p class="verinfo">(PHP 8 &gt;= 8.6.0)</p><p class="refpurpose"><span class="refname">mysqli::quote_string</span> -- <span class="refname">mysqli_quote_string</span> &mdash; <span class="dc-title">Quotes and escapes a string for use in an SQL statement</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-mysqli.quote-string-description">
  <h3 class="title">说明</h3>
  <p class="simpara">面向对象风格</p>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>mysqli::quote_string</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$string</code></span>): <span class="type"><a href="language.types.string.php" class="type string">string</a></span></div>

  <p class="simpara">过程化风格</p>
  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>mysqli_quote_string</strong></span>(<span class="methodparam"><span class="type"><a href="class.mysqli.php" class="type mysqli">mysqli</a></span> <code class="parameter">$mysql</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$string</code></span>): <span class="type"><a href="language.types.string.php" class="type string">string</a></span></div>

  <p class="simpara">
   Creates a legal SQL string literal that can be used in an SQL statement.
   The given string is escaped in the same way as
   <span class="methodname"><a href="mysqli.real-escape-string.php" class="methodname">mysqli::real_escape_string()</a></span>, taking into account
   the current character set of the connection, and the result is wrapped in
   single quotes. The returned value must therefore be inserted into the
   query without adding any further quotes around it.
  </p>
  <p class="simpara">
   Unlike <span class="methodname"><a href="mysqli.real-escape-string.php" class="methodname">mysqli::real_escape_string()</a></span>, the result is
   also safe when the <code class="literal">NO_BACKSLASH_ESCAPES</code> SQL mode is
   enabled on the connection.
  </p>
  <div class="caution"><strong class="caution">警告</strong>
   <h1 class="title">Security: the default character set</h1>
   <p class="simpara">
    The character set must be set either at the server level, or with
    the API function <span class="function"><a href="mysqli.set-charset.php" class="function">mysqli_set_charset()</a></span> for it to affect
    <span class="function"><strong>mysqli_quote_string()</strong></span>. See the concepts section
    on <a href="mysqlinfo.concepts.charset.php" class="link">character sets</a> for
    more information.
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <p class="simpara">
    Quoting is only suitable for string literals. It does not make
    identifiers, such as table or column names, safe. Whenever possible, use
    <a href="mysqli.quickstart.prepared-statements.php" class="link">prepared
    statements</a> instead of building queries manually.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-mysqli.quote-string-parameters">
  <h3 class="title">参数</h3>
  <p class="para">
   <dl>
    <dt>
<code class="parameter">mysql</code></dt><dd><p class="simpara">仅以过程化样式：由 <span class="function"><a href="function.mysqli-connect.php" class="function">mysqli_connect()</a></span> 或
<span class="function"><a href="mysqli.init.php" class="function">mysqli_init()</a></span> 返回的 <span class="classname"><a href="class.mysqli.php" class="classname">mysqli</a></span> 对象。</p></dd>
    
     <dt><code class="parameter">string</code></dt>
     <dd>
      <p class="simpara">
       The string to be quoted and escaped.
      </p>
      <p class="simpara">
       Characters encoded are <code class="literal">NUL (ASCII 0)</code>,
       <code class="literal">\n</code>, <code class="literal">\r</code>, <code class="literal">\</code>,
       <code class="literal">&#039;</code>, <code class="literal">&quot;</code>, and
       <kbd class="keycombo"><kbd class="keycap">CTRL</kbd>+<kbd class="keycap">Z</kbd></kbd>.
       If the <code class="literal">NO_BACKSLASH_ESCAPES</code> SQL mode is enabled on
       the connection, only <code class="literal">&#039;</code> is encoded, by doubling it.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-mysqli.quote-string-returnvalues">
  <h3 class="title">返回值</h3>
  <p class="simpara">
   Returns the escaped string enclosed in single quotes.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-mysqli.quote-string-examples">
  <h3 class="title">示例</h3>
  <div class="example" id="example-1">
   <p><strong>示例 #1 <span class="methodname"><strong>mysqli::quote_string()</strong></span> example</strong></p>
   <div class="example-contents"><p>面向对象风格</p></div>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

mysqli_report</span><span style="color: #007700">(</span><span style="color: #0000BB">MYSQLI_REPORT_ERROR </span><span style="color: #007700">| </span><span style="color: #0000BB">MYSQLI_REPORT_STRICT</span><span style="color: #007700">);
</span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"localhost"</span><span style="color: #007700">, </span><span style="color: #DD0000">"my_user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"my_password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"world"</span><span style="color: #007700">);

</span><span style="color: #0000BB">$city </span><span style="color: #007700">= </span><span style="color: #DD0000">"'s-Hertogenbosch"</span><span style="color: #007700">;

</span><span style="color: #FF8000">/* this query with quoted $city will work */
</span><span style="color: #0000BB">$query </span><span style="color: #007700">= </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT CountryCode FROM City WHERE name=%s"</span><span style="color: #007700">, </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">quote_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$city</span><span style="color: #007700">));
</span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #0000BB">$query</span><span style="color: #007700">);
</span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"Select returned %d rows.\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$result</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">num_rows</span><span style="color: #007700">);

</span><span style="color: #FF8000">/* this query will fail, because we didn't quote and escape $city */
</span><span style="color: #0000BB">$query </span><span style="color: #007700">= </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT CountryCode FROM City WHERE name='%s'"</span><span style="color: #007700">, </span><span style="color: #0000BB">$city</span><span style="color: #007700">);
</span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #0000BB">$query</span><span style="color: #007700">);</span></code></pre></div>
   </div>

   <div class="example-contents"><p>过程化风格</p></div>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

mysqli_report</span><span style="color: #007700">(</span><span style="color: #0000BB">MYSQLI_REPORT_ERROR </span><span style="color: #007700">| </span><span style="color: #0000BB">MYSQLI_REPORT_STRICT</span><span style="color: #007700">);
</span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= </span><span style="color: #0000BB">mysqli_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"localhost"</span><span style="color: #007700">, </span><span style="color: #DD0000">"my_user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"my_password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"world"</span><span style="color: #007700">);

</span><span style="color: #0000BB">$city </span><span style="color: #007700">= </span><span style="color: #DD0000">"'s-Hertogenbosch"</span><span style="color: #007700">;

</span><span style="color: #FF8000">/* this query with quoted $city will work */
</span><span style="color: #0000BB">$query </span><span style="color: #007700">= </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT CountryCode FROM City WHERE name=%s"</span><span style="color: #007700">, </span><span style="color: #0000BB">mysqli_quote_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">, </span><span style="color: #0000BB">$city</span><span style="color: #007700">));
</span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">mysqli_query</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">, </span><span style="color: #0000BB">$query</span><span style="color: #007700">);
</span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"Select returned %d rows.\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">mysqli_num_rows</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">));

</span><span style="color: #FF8000">/* this query will fail, because we didn't quote and escape $city */
</span><span style="color: #0000BB">$query </span><span style="color: #007700">= </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT CountryCode FROM City WHERE name='%s'"</span><span style="color: #007700">, </span><span style="color: #0000BB">$city</span><span style="color: #007700">);
</span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">mysqli_query</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">, </span><span style="color: #0000BB">$query</span><span style="color: #007700">);</span></code></pre></div>
   </div>

   <div class="example-contents"><p>以上示例的输出类似于：</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Select returned 1 rows.

Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near &#039;s-Hertogenbosch&#039;&#039; at line 1 in...</pre>
</div>
   </div>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-mysqli.quote-string-seealso">
  <h3 class="title">参见</h3>
  <ul class="simplelist">
   <li><span class="methodname"><a href="mysqli.real-escape-string.php" class="methodname" rel="rdfs-seeAlso">mysqli::real_escape_string()</a> - 根据当前连接的字符集，对于 SQL 语句中的特殊字符进行转义</span></li>
   <li><span class="methodname"><a href="mysqli.set-charset.php" class="methodname" rel="rdfs-seeAlso">mysqli::set_charset()</a> - 设置客户端字符集</span></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>