aidan           Tue Dec 28 07:06:26 2004 EDT

  Modified files:              
    /phpdoc/en/reference/mysql/functions        mysql-query.xml 
  Log:
  Removed the second useless example, and replaced it with a best-practice 
query. Moved the information around so it was more continuous, not scattered 
from top to bottom (the result of many edits to add tidbits I assume). Also - 
applied the new docskel.
  
http://cvs.php.net/diff.php/phpdoc/en/reference/mysql/functions/mysql-query.xml?r1=1.10&r2=1.11&ty=u
Index: phpdoc/en/reference/mysql/functions/mysql-query.xml
diff -u phpdoc/en/reference/mysql/functions/mysql-query.xml:1.10 
phpdoc/en/reference/mysql/functions/mysql-query.xml:1.11
--- phpdoc/en/reference/mysql/functions/mysql-query.xml:1.10    Fri Feb 20 
12:36:42 2004
+++ phpdoc/en/reference/mysql/functions/mysql-query.xml Tue Dec 28 07:06:25 2004
@@ -1,49 +1,100 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.10 $ -->
+<!-- $Revision: 1.11 $ -->
 <!-- splitted from ./en/functions/mysql.xml, last change in rev 1.62 -->
   <refentry id="function.mysql-query">
    <refnamediv>
     <refname>mysql_query</refname>
     <refpurpose>Send a MySQL query</refpurpose>
    </refnamediv>
-   <refsect1>
-    <title>Description</title>
-     <methodsynopsis>
-      <type>resource</type><methodname>mysql_query</methodname>
-      
<methodparam><type>string</type><parameter>query</parameter></methodparam>
-      <methodparam 
choice="opt"><type>resource</type><parameter>link_identifier</parameter></methodparam>
-     </methodsynopsis>
+
+   <refsect1 role="description">
+    &reftitle.description;
+    <methodsynopsis>
+     <type>resource</type><methodname>mysql_query</methodname>
+     <methodparam><type>string</type><parameter>query</parameter></methodparam>
+     <methodparam 
choice="opt"><type>resource</type><parameter>link_identifier</parameter></methodparam>
+    </methodsynopsis>
     <para>
-     <function>mysql_query</function> sends a query to the currently
+     <function>mysql_query</function> sends a query (to the currently
      active database on the server that's associated with the
-     specified link identifier.  If
-     <parameter>link_identifier</parameter> isn't specified, the last
-     opened link is assumed.  If no link is open, the function tries
-     to establish a link as if <function>mysql_connect</function> was
-     called with no arguments, and use it. The result of the query is buffered.
-    </para>
-    <note>
-     <para>
-      The query string should not end with a semicolon.
-     </para>
-    </note>
-    <para>
-     Only for SELECT,SHOW,EXPLAIN or DESCRIBE statements
-     <function>mysql_query</function>
-     returns a resource identifier or &false; if the query was
-     not executed correctly. For other type of SQL statements,
+     specified <parameter>link_identifier</parameter>).
+    </para>
+   </refsect1>
+
+   <refsect1 role="parameters">
+    &reftitle.parameters;
+    <para>
+     <variablelist>
+      <varlistentry>
+       <term><parameter>query</parameter></term>
+       <listitem>
+        <para>
+         A SQL query
+        </para>
+        <para>
+         The query string should not end with a semicolon.
+        </para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+       <term><parameter>link_identifier</parameter></term>
+       <listitem>
+        <para>
+         A link identifier, as returned by <function>mysql_connect</function>.
+        </para>
+        <para>
+         If <parameter>link_identifier</parameter> isn't specified, the last
+         opened link is assumed.  If no link is open, the function tries
+         to establish a link as if <function>mysql_connect</function> was
+         called with no arguments, and use it. The result of the query is 
buffered.
+        </para>
+       </listitem>
+      </varlistentry>
+     </variablelist>
+    </para>
+   </refsect1>
+
+   <refsect1 role="returnvalues">
+    &reftitle.returnvalues;
+    <para>
+     For SELECT, SHOW, DESCRIBE or EXPLAIN statements,
+     <function>mysql_query</function> 
+     returns a <type>resource</type> on success, and &false; on
+     error.
+    </para>
+    <para>
+     For other type of SQL statements, UPDATE, DELETE, DROP, etc,
      <function>mysql_query</function> returns &true; on success
-     and &false; on error. A non-&false; return value
-     means that the query was legal and could be executed by
-     the server.  It does not indicate anything about the number of
-     rows affected or returned. It is perfectly possible for a query
-     to succeed but affect no rows or return no rows.
+     and &false; on error.
     </para>
     <para>
-     The following query is syntactically invalid, so
-     <function>mysql_query</function> fails and returns &false;:
+     The returned result resource should be passed to
+     <function>mysql_fetch_array</function>, and other
+     functions for dealing with result tables, to access the returned data.
+    </para>
+    <para>
+     Use <function>mysql_num_rows</function> to find out how many rows
+     were returned for a SELECT statement or
+     <function>mysql_affected_rows</function> to find out how many
+     rows were affected by a DELETE, INSERT, REPLACE, or UPDATE
+     statement.
+    </para>
+    <para>
+     <function>mysql_query</function> will also fail and return &false;
+     if the user does not have permission to access the table(s) referenced by
+     the query.
+    </para>
+   </refsect1>
+
+   <refsect1 role="examples">
+    &reftitle.examples;
+    <para>
      <example>
-      <title><function>mysql_query</function> example</title>
+      <title>Invalid Query</title>
+      <para>
+       The following query is syntactically invalid, so
+       <function>mysql_query</function> fails and returns &false;.
+      </para>
       <programlisting role="php">
 <![CDATA[
 <?php
@@ -51,65 +102,73 @@
 if (!$result) {
     die('Invalid query: ' . mysql_error());
 }
+
 ?>
 ]]>
       </programlisting>
      </example>
     </para>
     <para>
-     The following query is semantically invalid if
-     <literal>my_col</literal> is not a column in the table
-     <literal>my_tbl</literal>, so <function>mysql_query</function>
-     fails and returns &false;:
      <example>
-      <title><function>mysql_query</function></title>
+      <title>Valid Query</title>
+      <para>
+       The following query is valid, so <function>mysql_query</function>
+       returns a <type>resource</type>.
+      </para>
       <programlisting role="php">
 <![CDATA[
 <?php
-$result = mysql_query('SELECT my_col FROM my_tbl');
+// This could be supplied by a user, for example
+$firstname = 'fred';
+$lastname  = 'fox';
+
+// Formulate Query
+// This is the best way to perform a SQL query
+// For more examples, see mysql_real_escape_string()
+$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE 
firstname='%s' AND lastname='%s'",
+    mysql_real_escape_string($firstname),
+    mysql_real_escape_string($lastname));
+
+// Perform Query
+$result = mysql_query($query);
+
+// Check result
+// This shows the actual query sent to MySQL, and the error. Useful for 
debugging.
 if (!$result) {
-    die('Invalid query: ' . mysql_error());
+    $message  = 'Invalid query: ' . mysql_error() . "\n";
+    $message .= 'Whole query: ' . $query;
+    die($message);
 }
+
+// Use result
+// Attempting to print $result won't allow access to information in the 
resource
+// One of the mysql result functions must be used
+// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
+while ($row = mysql_fetch_assoc($result)) {
+    echo $row['firstname'];
+    echo $row['lastname'];
+    echo $row['address'];
+    echo $row['age'];
+}
+
+// Free the resources associated with the result set
+// This is done automatically at the end of the script
+mysql_free_result($result);
 ?>
 ]]>
       </programlisting>
      </example>
     </para>
-    <para>
-     <function>mysql_query</function> will also fail and return &false;
-     if you don't have permission to access the table(s) referenced by
-     the query.
-    </para>
-    <para>
-     Assuming the query succeeds, you can call
-     <function>mysql_num_rows</function> to find out how many rows
-     were returned for a SELECT statement or
-     <function>mysql_affected_rows</function> to find out how many
-     rows were affected by a DELETE, INSERT, REPLACE, or UPDATE
-     statement.
-    </para>
-    <para>
-     Only for SELECT,SHOW,DESCRIBE or EXPLAIN statements,
-     <function>mysql_query</function> 
-     returns a new result identifier that you can pass to
-     <function>mysql_fetch_array</function> and other
-     functions dealing with result tables. When you are done with the
-     result set, you can free the resources associated with it by
-     calling <function>mysql_free_result</function>. Although, the
-     memory will automatically be freed at the end of the script's
-     execution.
-    </para>
+   </refsect1>
+
+   <refsect1 role="seealso">
+    &reftitle.seealso;
     <para>
      See also 
-     <function>mysql_num_rows</function>,
-     <function>mysql_affected_rows</function>,
      <function>mysql_unbuffered_query</function>,
-     <function>mysql_free_result</function>,
-     <function>mysql_fetch_array</function>,
-     <function>mysql_fetch_row</function>,
      <function>mysql_fetch_assoc</function>,
-     <function>mysql_result</function>,
-     <function>mysql_select_db</function> and
+     <function>mysql_error</function>,
+     <function>mysql_result</function> and
      <function>mysql_connect</function>.
     </para>
    </refsect1>

Reply via email to