在php中处理数组? [重复]

时间:2022-10-14 15:15:42

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

可能重复:mysql_fetch_array()期望参数1是资源,在select中给出boolean

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

我似乎遇到了我的PHP问题,收到此错误:

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

警告:mysql_real_escape_string()期望参数1为字符串,数组在第27行的/home/nightl7/public_html/demos/autocompletejquery/submit.php中给出

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

警告:mysql_query()[function.mysql-query]:在第36行的/home/nightl7/public_html/demos/autocompletejquery/submit.php中拒绝用户'nightl7'@'localhost'(使用密码:NO)的访问权限

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 = ''

警告:mysql_query()[function.mysql-query]:无法在第36行的/home/nightl7/public_html/demos/autocompletejquery/submit.php中建立到服务器的链接用户'nightl7'@ localhost的访问被拒绝'(使用密码:否)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 each
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:

而且我不知道为什么我收到密码错误,因为这是我的db_access.php的样子:

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

1 个解决方案

#1


4  

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:

你到目前为止看起来很不错。在构建WHERE子句时,您已正确转义SQL输入。您已正确检查查询结果中的错误。看起来您需要做的下一件事是获取查询结果行:

// 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:

更新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.

如果您的用户名和密码在此文件中是正确的,则可能未正确解析它,因为您的Web服务器上禁用了short_open_tags。

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

尝试改变

#1


4  

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:

你到目前为止看起来很不错。在构建WHERE子句时,您已正确转义SQL输入。您已正确检查查询结果中的错误。看起来您需要做的下一件事是获取查询结果行:

// 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:

更新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.

如果您的用户名和密码在此文件中是正确的,则可能未正确解析它,因为您的Web服务器上禁用了short_open_tags。

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

尝试改变