为什么不';t MySQL函数在函数内部工作


Why don't MySQL Functions work inside a function?

好的,这是有效的:

mysql_select_db("news");
$newsarr = mysql_fetch_array(mysql_query("SELECT * FROM newsByDate ORDER BY date DESC"));
echo var_dump($newsarr);

它返回这个:

array (size=6)
  0 => string '140425-20:43:43' (length=15)
  'Date' => string '140425-20:43:43' (length=15)
  1 => string 'dfghfghdfg' (length=10)
  'Description' => string 'dfghfghdfg' (length=10)
  2 => string 'Enter text, media link or upload image' (length=38)
  'Media' => string 'Enter text, media link or upload image' (length=38)

这不起作用:

function newstable()
    {
        mysql_select_db("news");
        $newsarr = mysql_fetch_array(mysql_query("SELECT * FROM newsByDate ORDER BY date DESC"));
        return var_dump($newsarr);
    }
echo newstable();

它返回这个:

警告:mysql_fetch_array()要求参数1为资源,给定为布尔值

因此,一旦我试图将工作代码转换为函数,它就会失败。为什么?我正试图弄清楚如何在一个函数中使用这些该死的MySQL函数,这样我就可以用MySQL中的记录构建一个表,并在我网页的任何部分随时调用它。到目前为止,它根本没有合作。

此外,我的数据库中有6条记录,为什么数组只返回1条记录中的数据?

感谢

您发布的in a comment代码是这样的:

<?php 
$host = "localhost"; 
$uName = "mike"; 
$pWord = "password"; 
$con = mysql_connect($host,$uName,$pWord); 
if (!$con) { 
$mysqlError = "<p>Can not connect to mysql: " . mysql_error() . "</p>"; 
die ( "can not connect to server"); 
}
function newstable() { 
mysql_select_db("news"); 
$sqlgetnews = "SELECT * FROM newsByDate ORDER BY date DESC"; 
$sqlnewsquery = mysql_query($sqlgetnews); 
$newsarr = mysql_fetch_array($sqlnewsquery); 
return var_dump($newsarr); } mysql_close($con); 
echo newstable()
?>

echo newstable() 末尾缺少分号

它需要在那里,否则它会在我使用该代码时产生错误。

您还过早地关闭了数据库连接
使用在我的服务器上成功测试的以下代码:

<?php 
$host = "localhost"; 
$uName = "mike"; 
$pWord = "password"; 
$con = mysql_connect($host,$uName,$pWord); 
if (!$con) { 
$mysqlError = "<p>Can not connect to mysql: " . mysql_error() . "</p>"; 
die ( "can not connect to server"); 
}
function newstable() { 
mysql_select_db("news"); 
$sqlgetnews = "SELECT * FROM newsByDate ORDER BY date DESC"; 
$sqlnewsquery = mysql_query($sqlgetnews); 
$newsarr = mysql_fetch_array($sqlnewsquery); 
return var_dump($newsarr); } 
echo newstable();
mysql_close($con); 
?>

将错误报告放在文件的开头:

error_reporting(E_ALL);
ini_set('display_errors', 1);
  • http://www.php.net/manual/en/function.mysql-error.php

也可以使用:(在关闭数据库连接之前)

echo mysql_errno($con) . ": " . mysql_error($con) . "'n";

然而,我怀疑你可能是在试图获取数据并获得回音。如果是这样的话,你正试图使用类似于的东西

while ($row = mysql_fetch_assoc($newsarr)) // <- incorrect variable used
 {
        $row = $row["column"];
 }
 echo $row;

您需要使用$sqlnewsquery变量。

while ($row = mysql_fetch_assoc($sqlnewsquery)) 
 {
        $row = $row["column"];
 }
 echo $row;

脚注:

mysql_*功能弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,该扩展已被弃用,不建议用于编写新代码,因为它将来会被删除。相反,应该使用mysqliPDO_MySQL扩展。另请参阅MySQL API概述以获取选择MySQL API时的进一步帮助。

这些函数允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/.

MySQL文档可在»http://dev.mysql.com/doc/.