cvs: phpdoc /en/reference/mysql/functions mysql-query.xml
| From: | Aidan Lister | Date: | Tue, 28 Dec 2004 12:06:26 +0000 |
| Subject: | cvs: phpdoc /en/reference/mysql/functions mysql-query.xml | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969365623@lists.php.net to get a copy of this message | ||
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>
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>