Как превратить строки MySQL в эквиваленты SQL Server

В настоящее время я работаю на веб-сайте клиентов, и у меня возникла проблема. Я использую систему входа в систему, которая была показана мне коллегой, которая использует строки MySQL. Я подключил к нему информацию клиента и загрузил его и получил ошибку подключения. После расчесывания кода я обнаружил некоторые ошибки, но исправление их не устраняет проблему подключения. После копания на веб-хосте клиента я заметил, что их база данных размещена на сервере Microsoft SQL вместо сервера MySQL. Теперь возникают вопросы:

1.) Как мне изменить строки MySQL в строки SQL Server?

2.) Могу ли я использовать PHP для управления строками SQL 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"; } 

Любые предложения будут ценны. Заранее спасибо!

Поскольку база данных больше не является MySQL, вам придется переписать код, который использует функции MySQL. Это легко сделать с PDO (объектами данных PHP) и гораздо более переносимо для будущих изменений.

Посмотрите на этот пример SQL 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); ?> с <?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); ?> с <?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 .

Вам нужно изменить функции PHP, запрограммированные для mysql, на эквивалентные функции сервера Sql.

mysql_connect() => mssql_connect()

mysql_select_db() => mssql_select_db()

mysql_num_rows() => mssql_num_rows()

Вот список всех функций для SQL Server. http://php.net/manual/en/book.mssql.php

Некоторые из них довольно легко перевести на SQL Server, но некоторые другие вещи немного сложнее.

Например, возьмем LIMIT. В SQL Server нет такой вещи, как LIMIT. И GROUP BY действует гораздо более различно, и множество агрегирующих запросов необходимо переписать.

С другой стороны, SQL Server определенно предоставляет некоторые действительно приятные функции, которые MySQL не предоставляет.

Если вы боретесь с LIMIT, вы должны прочитать вверх или ROW_NUMBER (). И для запросов GROUP BY вы должны обязательно прочитать GROUP BY и объединить его с любой функцией ранжирования, например (ROW_NUMBER (), DENSE_RANK () … и т. Д.) С OVER (PARTITION BY col ORDER BY col) …