php - 在 php 中处理数组?

标签 php mysql

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

我的 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

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

这是我的代码:

<?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>';

?>

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

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

最佳答案

到目前为止,您所拥有的看起来相当不错。在构建 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

更新您的 db_access.php 的问题:

如果此文件中的用户名和密码正确,则可能无法正确解析,因为 short_open_tags在您的网络服务器上被禁用。

尝试更改<?<?phpdb_access.php .

关于php - 在 php 中处理数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7430989/

相关文章:

需要 PHP 运算符(operator)帮助

javascript - TableExport jquery 插件 : Filename and Extension issue

php - 只从 MySQL 获取字段名

php - 如何减少使用PHP和MySQL对海量数据执行某些操作所需的时间?

php - 通过虚拟主机托管时如何运行 Laravel 应用程序?

php - 将多维数组中的重复数组键分组到子数组中

php - 计算多列mysql中的值

php - 不唯一的表/别名 : 'user' phpmyadmin XAMPP

sql - 将SQL语句翻译成named_scope?

mysql - 我需要更改 MySQL 数据库的默认字符集吗?