MySQL查询没有返回任何结果

时间:2013-08-09 14:43:58

标签: php mysql database

我一直试图这样做一两天,但是我无法理解为什么它不起作用,因为我有其他人以同样的方式设置。

我只想简单地从数据库中返回一些数据。

这是一个只包含它的php文件(index.php)。

<?php
/*connect to local database */
$host="localhost"; // Host name 
$db_username="Josh"; // Mysql username 
$db_password="password"; // Mysql password 
$db_name="messenger"; // Database name 
$tbl_name="messages"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$db_username", "$db_password")or die("cannot connect to database"); 
mysql_select_db("$db_name")or die("cannot select DB");
$con=mysql_connect("$host","$db_username","$db_password","$db_name");

echo "test";
//retrieve messages
$query = mysql_query($con, "SELECT * FROM messages WHERE key='Josh'") or       die(mysql_error());
echo "test2";
$row = mysql_fetch_assoc($query);
$msg = $row['msg_array'];

echo "test3";
echo mysql_num_rows($query);
echo $msg;

?>

仅返回“test // test2 // test3”,仅此而已。

这是我的数据库 Here's mdatabase

我一直试图简单地让一些东西回来几个小时而且让我感到恼火。 我已经有很多错误,因为我一直在改变它,但这一次,没有任何回报。

这应该可以正常工作,因为我多次返回数据并知道如何从头开始。我的所有其他网站都正常工作,我也没有更新phpMyAdmin。

这可能是一个小错误,但它确实让我烦恼 任何帮助将不胜感激,谢谢。

修改

我放了

error_reporting(E_ALL);
ini_set('display_errors',1);

在我的代码顶部并返回:

测试// // TEST2 警告:mysql_fetch_assoc()期望参数1为资源,布尔值在第22行的C:\ Users \ Josh \ SkyDrive \ Default Sync Folder \ Websites \ IM \ global.php中给出 TEST3 警告:mysql_num_rows()要求参数1为资源,布尔值在第26行的C:\ Users \ Josh \ SkyDrive \ Default Sync Folder \ Websites \ IM \ global.php中给出

2 个答案:

答案 0 :(得分:2)

$con=mysql_connect("$host","$db_username","$db_password","$db_name");

看起来很奇怪

我想很多PHP错误,但似乎你无法看到它们 在代码顶部添加这些行

error_reporting(E_ALL);
ini_set('display_errors',1);

然后在手册页中查看您在错误消息中看到的每个函数名称

除此之外,你的主要问题是

您使用的是过时的库

以下是必须的:

<?php
error_reporting(E_ALL);
ini_set('display_errors',1);

// connect (better to be moved into included file)
$dsn = "mysql:host=localhost;dbname=messenger;charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$db = new PDO($dsn,"Josh", "password", $opt);

// getting data
$stm = $db->query("SELECT * FROM messages WHERE `key`='Josh'");
$row = $stm->fetch();
$msg = $row['msg_array'];

答案 1 :(得分:0)

mysql_connect("$host", "$db_username", "$db_password")or die("cannot connect to database"); 

mysql_connect($host, $db_username, $db_password)or die("cannot connect to database"); 

这些都不是必须转义的字符串,它们是变量。

另外,添加:

error_reporting(E_ALL);
ini_set("display_erorrs","on");

此外,使用单个mysql_connection时,您可以删除:

$con=mysql_connect(...);

它会自动选择当前的那个。