我在Windows平台上创建了一个脚本,该脚本连接到mysql数据库并返回表的结果。我写的一个非常基本的脚本只是测试我的连接工作。该脚本在我的Windows机器上工作正常,但在我的新Mac上没有。在Mac上它根本不显示任何记录。
我知道数据库连接已经建立,因为没有错误,但是我不明白为什么结果集没有显示在屏幕上,因为我说它在我的Windows机器上工作正常。
Mac有mysql(带数据)和运行php的apache。
请帮助我,因为我现在不知道该怎么办?
下面的脚本:
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'test';
mysql_select_db($dbname);
mysql_select_db("test", $conn);
$result = mysql_query("SELECT * FROM new_table");
while($row = mysql_fetch_array($result))
{
echo $row['test1'] . " " . $row['test2'] . " " . $row['test3'];
echo "<br />";
}
mysql_close($con);
答案 0 :(得分:1)
你可以做很多事情来调试它。
显示所有PHP错误。
ini_set('display_errors','On');
ini_set('error_reporting',E_ALL);
捕获所有可能的MySQL错误,而不仅仅是关于您是否成功连接的错误。
mysql_select_db("test", $conn) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
$result = mysql_query("SELECT * FROM new_table") or die(mysql_error());
旁注:没有理由选择您希望使用两次的数据库。
答案 1 :(得分:0)
很难看出有什么问题...所以添加一些基本的错误检查,比如改变这个
$result = mysql_query("SELECT * FROM new_table");
到
$result = mysql_query("SELECT * FROM new_table") or die(mysql_error());
这会显示您从查询中获得的错误(如果有的话)..您在mysql_query
boolean
看到它会返回mysql_close($con);
,如果有的话是一个错误
另请注意,关闭MySQL连接的变量名中有错误:
mysql_close($conn);
应该是
{{1}}
答案 2 :(得分:0)
在获取行之前检查SELECT
查询是否成功。
<?php
$result = mysql_query("SELECT * FROM new_table");
if(!$result)
die('SQL query failed: ' . mysql_error());
答案 3 :(得分:0)
我唯一能想到的是Mac文件系统区分大小写,而Windows不是这样,可能是你拼错了表的名称。在任何cas你应该做
$result = mysql_query("SELECT * FROM new_table") or die("error:".mysql_error());
查看错误
答案 4 :(得分:0)
我认为你应该使用改进的PHP mysql驱动程序
try
{
$db = new mysqli("localhost","root","root","test");
if ($db->connect_errno) {
throw new Exception($db->connect_error);
}
if ($result = $db->query("SELECT * FROM new_table")) {
printf("Select returned %d rows.\n", $result->num_rows);
while($row = $result->fetchAssoc())
{
echo $row['test1'] . " " . $row['test2'] . " " . $row['test3'];
echo "<br />";
}
/* free result set */
$result->close();
}
$db->close();
}
catch(Exception $e)
{
printf("Database Error: %s\n", $e->getMessage());
exit();
}