【发布时间】:2016-05-28 02:54:12
【问题描述】:
使用 phpmyadmin,我已将网站的文件和表格从本地主机迁移到服务器。
我的设置是:用户必须使用用户名和密码登录 (checklogin.php) 才能访问主页 (index.php)。
下面是checklogin.php的内容:
<?php
$host="localhost"; // Host name
$username="garbo49"; // Mysql username
$password="turf"; // Mysql password
$db_name="garbo49"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "loginsuccess.php"
$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";
header("location:loginsuccess.php");
}
else {
echo "Wrong Username or Password";
}
?>
现在我可以登录(不会产生错误),并且我的主页 (index.php) 会显示(或者至少静态信息会显示) - 但只要我从 index.php 文件中删除 include ('setup.php')。否则,它会显示一个空白页。 Setup.php 是包含数据库、本地主机、用户名和密码详细信息的文件。
setup.php 中的所有详细信息都与新数据库的详细信息匹配(与上面显示的登录页面中指定的详细信息相同)。以下是setup.php的内容:
<?php
$hn = 'localhost';
$db = 'garbo49';
$un = 'garbo49';
$pw = 'turf';
#DB Connection:
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) die($conn->connect_error);
#Functions:
require_once ('function.php');
#Section setup:
$newsrow = news_data($conn);
$reviewsrow = reviews_data($conn);
$blogrow = blog_data($conn);
$reciperow = recipe_data($conn);
$foodiqrow = foodiq_data($conn);
$eventsrow = events_data($conn);
//$result->close();
//$conn->close();
?>
为什么服务器拒绝读取 setup.php,而所有的细节都与新数据库对应?希望有任何见解。
解决方案:在William Lee (cmets) 的指导下 - 查看错误日志显示,实际上中间的错误是:Call to undefined function mysqli_fetch_all()。所以我想这意味着我出色的主机没有提供 msqli 支持(它的 PHP 安装不是用 mysqlnd 编译的)。
所以我改用 $result->fetch_assoc() 。 A good explanation here.
【问题讨论】:
-
转储 get_included_files() 会得到什么?
-
@William Lee 我应该在哪个文件中运行它?
-
尝试将其放在代码的第一行:“error_reporting(E_ALL);”然后是“ini_set('display_errors', 1);”并尝试模拟空白页
-
setup.php 必须在 error_reporting 和 ini_set 之后,这样它会影响 setup.php 并向我们展示困扰您的问题。
-
你的问题,你的主机不支持mysqli
标签: php localhost database-migration