为什么MySQL函数不能在函数内部工作?

时间:2014-04-26 05:15:18

标签: php mysql function syntax-error

好的,这有效:

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条记录中的数据?

由于

1 个答案:

答案 0 :(得分:0)

您发布的代码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);

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

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 Overview以获得进一步的帮助。

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

可以在»http://dev.mysql.com/doc/找到MySQL的文档。