Brian Dunning <[EMAIL PROTECTED]> wrote on 10/23/2005 03:00:26 PM:

> If I say this, I get all my data:
> 
> <?php
> $sql = "select * from myTable;";
> $result = mysql_query($sql);
> ?>
> 
> But if I say this, I get no results at all:
> 
> <?php
> $sql = "create temporary table xxx select * from myTable;";
> $result1 = mysql_query($sql);
> $sql = "select * from xxx";
> $result2 = mysql_query($sql);
> ?>
> 
> Seems pretty straightforward. What am I missing?
> 

I am not a PHP expert but it could be that mysql_query() is not using the 
same connection between invocations. From my copy of the PHP documentation
>>>>>>>>>>>>>>

resource mysql_query ( string query [, resource link_identifier] )

mysql_query() sends a query to the currently active database on the server 
that's associated with the specified link identifier. If link_identifier 
isn't specified, the last opened link is assumed. If no link is open, the 
function tries to establish a link as if mysql_connect() was called with 
no arguments, and use it. The result of the query is buffered. 

Note: 
The query string should not end with a semicolon. 

Only for SELECT,SHOW,EXPLAIN or DESCRIBE statements mysql_query() returns 
a resource identifier or FALSE if the query was not executed correctly. 
For other type of SQL statements, mysql_query() 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. 
<<<<<<<<<<<<<

You should always check the return values for errors. You should also 
ensuer you are using the same, continuously open link_identifier as 
temporary tables are specific to the connection that forms them. If you 
disconnect and reconnect, you lose not just your temporary tables but any 
user-defined variables as well.

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine

Reply via email to