我已将自定义 PHP 应用程序从 Linux VPS 迁移到 Windows Azure 网站,唯一的问题似乎是用 SendGrid 替换 PHP_mail。目前这个应用程序完全是从头开始编写的,没有任何框架,并使用 MySQL 进行数据存储。迁移应用程序时,我创建了一个 .sql 文件并使用 MySQL Workbench 在新数据库服务器上创建表。
我发现的问题是我可以使用当前用户登录,但是无法成功更新表。没有迹象表明应用程序添加了另一行。然而,应用程序的行为就好像它是成功的,并继续到“成功”页面。但是,由于没有创建用户,因此不会创建新 session 。
我能看出这两个数据库之间的区别是,原始表名是大写字母,而在新的数据库服务器上,它们都是小写表名。
我尝试过从 5.4 上下更改 PHP 版本,并且没有对代码中的 MySQL 语句进行任何修改。
根据您的经验,我可以做什么来帮助我找到问题?
编辑:
以下是应更新数据服务器的文件部分:
<?php
session_start();
// store session data
if ($_SESSION['employerID']<>'') {
header("Location: account_details.php");
}
if (($_POST["fname"]<>"") && ($_POST["email"]<>"")) {
include ("config/config.php");
getConnect();
$stmt = "insert into tblemployer (shortCode,company, fName, lName,email,address,city,state,zip,password) values ('".mysql_escape_string($_POST["shortCode"])."','".mysql_escape_string($_POST["company"])."','".mysql_escape_string($_POST["fname"])."','".mysql_escape_string($_POST["lname"])."','".mysql_escape_string($_POST["email"])."','".mysql_escape_string($_POST["address"])."','".mysql_escape_string($_POST["city"])."','".mysql_escape_string($_POST["state"])."','".mysql_escape_string($_POST["zip"])."','".md5($_POST["password"])."')";
//echo $stmt;
$query = mysql_query($stmt);
$EID=mysql_insert_id();
$_SESSION['employerID']=$EID;
$_SESSION['userName']=$_POST["company"];
$stmt = "insert into tblmembership (status, employerID, membershipID) values ('0','".$EID."','".mysql_escape_string($_POST["membership"])."')";
//echo $stmt;
$_SESSION['MID']=$_POST["membership"];
$query = mysql_query($stmt);
header( 'Location: corp_payment.php' ) ;
}
?>
最佳答案
我显然不知道为什么,但我没有将 Windows Azure 迁移到 OpenShift,而是将相同的代码(没有 SendGrid)迁移到 OpenShift,并且它按预期工作。
这是 IIS 重写问题吗?
关于php - 更新 MySQL 时出现迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21240684/