我目前正在一个客户网站工作,我遇到了一个小问题。我使用的是一个使用MySQL字符串的同事向我展示的登录系统。我将客户端的信息插入其中并加载到其中,得到了一个连接错误。在梳理了我的代码之后,我发现了一些错误,但是修复它们并没有解决连接问题。在深入了解客户端的web主机之后,我注意到它们的数据库托管在Microsoft服务器上,而不是MySQL服务器上。现在问题来了:
1.)如何将MySQL字符串更改为Server字符串?
2.)我仍然可以使用PHP来操作Server字符串吗?
3.)有什么好的教程,你们推荐,可以帮助我更好地理解这一点?
参考文献
下面是我使用的MySQL字符串,包括由PHP操作的行:
// 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");
// Define $myusername and $mypassword
$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 user_name='$myusername' and user_pswd='$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 "login_success.php"
$_SESSION['myusername'];
$_SESSION['mypassword'];
header("location:Inside.php");
} else {
echo "Wrong Username or Password";
}如有任何建议,将不胜感激。提前感谢!
发布于 2012-03-17 00:50:52
由于数据库不再是MySQL,所以您必须重写一些使用MySQL函数的代码。这很容易用PDO (PHP数据对象)完成,而且对于将来的更改来说,它更容易移植。
看看这个Server示例
<?php
$user = 'myUsername';
$pass = 'myPassword';
// Connect to mssql database
$conn = new PDO('mssql:host=127.0.0.1; dbname=tempdb;', $user, $pass);
$query = "SELECT * FROM table1";
// Prepare query and run it. This is where you can use prepared statements
// to avoid SQL injection
$sth = $conn->prepare($query);
$sth->execute();
// Fetch the returned db rows and dump them as output
$retRows = $sth->fetchAll();
var_dump($retRows);
// Clean up resources
unset($sth); unset($conn);
?>在代码中发现像mysql_*这样的函数的任何地方,都需要使用PDO查找正确的方法。
发布于 2012-03-17 00:51:08
您需要将mysql调用的PHP函数更改为等效的Server函数。
mysql_connect() => mssql_connect()
mysql_select_db() => mssql_select_db()
mysql_num_rows() => mssql_num_rows()
下面是Server所有函数的列表。http://php.net/manual/en/book.mssql.php
发布于 2012-03-17 01:45:24
其中有些很容易转换为Server,但有些事情则比较棘手。
举个例子,让我们以极限为例。SQL Server中没有限制这样的内容。和acts的组有很大的不同,很多聚合查询需要重写。
另一方面,Server确实提供了一些MySQL不提供的非常好的功能。
如果您正在与极限作斗争,则应该在顶部或ROW_NUMBER()上阅读。对于GROUP查询,您应该明显地阅读GROUP,并将其与任何排序函数相结合,例如(ROW_NUMBER(),DENSE_RANK().具有过载(按顺序分拆).
https://stackoverflow.com/questions/9746245
复制相似问题