首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将MySQL字符串转换为Server等效项

如何将MySQL字符串转换为Server等效项
EN

Stack Overflow用户
提问于 2012-03-17 00:42:32
回答 3查看 2.4K关注 0票数 1

我目前正在一个客户网站工作,我遇到了一个小问题。我使用的是一个使用MySQL字符串的同事向我展示的登录系统。我将客户端的信息插入其中并加载到其中,得到了一个连接错误。在梳理了我的代码之后,我发现了一些错误,但是修复它们并没有解决连接问题。在深入了解客户端的web主机之后,我注意到它们的数据库托管在Microsoft服务器上,而不是MySQL服务器上。现在问题来了:

1.)如何将MySQL字符串更改为Server字符串?

2.)我仍然可以使用PHP来操作Server字符串吗?

3.)有什么好的教程,你们推荐,可以帮助我更好地理解这一点?

参考文献

下面是我使用的MySQL字符串,包括由PHP操作的行:

代码语言:javascript
复制
    // 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";
}

如有任何建议,将不胜感激。提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-17 00:50:52

由于数据库不再是MySQL,所以您必须重写一些使用MySQL函数的代码。这很容易用PDO (PHP数据对象)完成,而且对于将来的更改来说,它更容易移植。

看看这个Server示例

代码语言:javascript
复制
<?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查找正确的方法。

票数 3
EN

Stack Overflow用户

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2012-03-17 01:45:24

其中有些很容易转换为Server,但有些事情则比较棘手。

举个例子,让我们以极限为例。SQL Server中没有限制这样的内容。和acts的组有很大的不同,很多聚合查询需要重写。

另一方面,Server确实提供了一些MySQL不提供的非常好的功能。

如果您正在与极限作斗争,则应该在顶部或ROW_NUMBER()上阅读。对于GROUP查询,您应该明显地阅读GROUP,并将其与任何排序函数相结合,例如(ROW_NUMBER(),DENSE_RANK().具有过载(按顺序分拆).

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9746245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档