PHP返回行

时间:2014-05-08 10:42:52

标签: php mysql database connection return

我的问题是,当我想要返回表中的所有行时,我收到此错误:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
/home/a2943462/public_html/index.php on line 20

我也尝试过array,assoc,row但是没有一个工作,这是我的代码:

<?php
$con=mysql_connect('mysql11.000webhost.com', 'db_username', 'db_password','Table');
// Check connection
if (!$con) {
  echo "Failed to connect to MySQL: " . mysql_connect_error();
}

$result = mysql_query("SELECT * FROM PageInfo",$con);

    echo $result;
    echo $row['ID'];
    echo "<table border='1'>
    <tr>
        <th>ID</th>
        <th>Title</th>
        <th>Video</th>
        <th>Posted</th>
    </tr>";

while ($row = mysql_fetch_array($result)) {   // Line 20
  echo "<tr>";
  echo "<td>".$row["ID"]."</td>";
  echo "<td>".$row["Title"]."</td>";
  echo "<td>".$row["Video"]."</td>";
  echo "<td>".$row["Posted"]."</td>";
  echo "</tr>";
}
echo "</table>";

mysql_free_result($result);

mysql_close($con);
?>

继承了网站,所以你可以看到错误是什么

http://wirechat.net16.net/

4 个答案:

答案 0 :(得分:2)

我可以看到您的示例脚本出现一些错误,希望这可以解释它们。

$con=mysql_connect('mysql11.000webhost.com', 'db_username', 'db_password','Table');

应该是:

$con=mysql_connect('mysql11.000webhost.com', 'db_username', 'db_password');

根据http://uk1.php.net/mysql_connect,第四个参数应该是链接连接器,而不是您指定的表选择。

您还需要指定您从中获取数据的表所在的数据库,这可以通过在您完成'mysql_connect'后运行来完成

$db = mysql_select_db('database_name', $con);

我注意到你也试图在分配之前访问'$ row'参数(第11行),即

echo $row['ID'];

而你只在while循环的第20行分配它。

此外,一旦你跑了:

$result = mysql_query("SELECT * FROM PageInfo",$con);

然后你想在尝试访问结果之前检查结果的值,根据http://uk1.php.net/manual/en/function.mysql-query.php,如果你输入的查询有问题,'mysql_query'的结果可能是布尔值false。

这可能是因为您连接的用户没有您指定的表/ db的权限,更有可能是因为您错过了'mysql_select_db'而发生错误。

无论哪种方式,你最好检查$ result并在出现问题时退出/抛出异常,即

if ($result === false)
{
    echo "Error with result variable";
    exit();
}

希望无论如何应该对脚本的大多数问题进行排序,并且运气好的话可以解释为什么会出现问题

答案 1 :(得分:1)

you have syntax error to connect database

$con=mysql_connect('mysql11.000webhost.com', 'db_username', 'db_password','Table');

change to 

$con=mysql_connect('mysql11.000webhost.com', 'db_username', 'db_password','databasename');

答案 2 :(得分:0)

$con应该是

中的第一个参数
$result = mysql_query("SELECT * FROM PageInfo",$con);

尝试,

$result = mysql_query($con,"SELECT * FROM PageInfo");

尝试添加此

$result = mysql_query("SELECT * FROM PageInfo",$con) or die(mysql_error());

并找出确切的原因。

答案 3 :(得分:0)

你还没有选择数据库,我也不相信你应该为mysql_connect设置第四个参数“Table”。请尝试这样做,确保将“database_name”替换为您的实际数据库名称。

$con=mysql_connect('mysql11.000webhost.com', 'db_username', 'db_password');
$db = mysql_select_db('database_name');

$result = mysql_query("SELECT * FROM PageInfo");
var_dump(  mysql_fetch_array($result)  );