开发者

Processing an array in php? [duplicate]

This question already has answers here: Closed 10 years ago.

Possible Duplicate:

mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

I seem to have run into a problem with my php, getting this error:

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /home/nightl7/public_html/demos/autocompletejquery/submit.php on line 27

Warning: mysql_query() [function.mysql-query]: Access denied for user 'nightl7'@'localhost' (using password: NO) in /home/nightl7/public_html/demos/autocompletejquery/submit.php on line 36

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/nightl7/public_html/demos/autocompletejquery/submit.php on line 36 Access denied for user 'nightl7'@'localhost' (using password: NO) SELECT * FROM markers WHERE select3 = ''

This is the code I have:

<?php
require("db_access.php");

function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 

$name=$_POST['name'];
$address=$_POST['address'];
$type=$_POST['type'];
$request=$_POST['$_REQUEST'];

// Select all the rows in the markers table
$inputs = array('select3');
$where  = array();


foreach($inputs as $input)
{
    if(!empty($_POST[$input])) {
        $where[] = "{$input} = '" . mysql_real_escape_string($_POST[$input]) . "'";
    }
}

if ($where) {
    $query = 'SELECT * FROM markers WHERE ' . implode(' AND ', $where);
} else {
    user_error("No rows returned by:<br />\n$query"); 
}
$result = mysql_query($query);
if($result == false) {
   die(mysql_error() . "<br />\n$query");
}
if(mysql_num_rows($result) == 0) {
   user_error("No rows returned by:<br />\n$query");
} 

// Fetch the result    
$rowset = array();
while ($row = mysql_fetch_array($result)) {
   $rowset[] = $row;
}

// Look at your rowset structure:
print_r($rowset);


header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<markers>';

// Iterate through the rows, printing XML nodes for eac开发者_高级运维h
while ($row = @mysql_fetch_assoc($result)){
  // ADD TO XML DOCUMENT NODE
  echo '<marker ';
  echo 'name="' . parseToXML($row['name']) . '" ';
  echo 'address="' . parseToXML($row['address']) . '" ';
  echo '/>';
}

// End XML file
echo '</markers>';

?>

And I don't know why I'm getting a password error since this is what my db_access.php looks like:

<?
$username="nightl7_mapus";
$password="MYPASSWORD - is is correct :)";
$database="nightl7_map";
?>


What you have so far looks pretty good. You have properly escaped the SQL inputs when building your WHERE clause. You've properly checked for errors in your query result. Looks like the next thing you need to do is fetch your query result rows:

// You already have....
$result = mysql_query($query);
if($result == false) {
   die(mysql_error() . "<br />\n$query");
}
if(mysql_num_rows($result) == 0) {
   user_error("No rows returned by:<br />\n$query");
} 

// Fetch the result    
$rowset = array();
while ($row = mysql_fetch_array($result)) {
   $rowset[] = $row;
}

// Look at your rowset structure:
print_r($rowset);

// then do something with the $rowset array

UPDATE Problems with your db_access.php:

If your username and password are correct in this file, perhaps it isn't being parsed correctly because short_open_tags are disabled on your web server.

Try changing <? to <?php in db_access.php.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜