Changer php mysql en php mssql

Hey Tout le monde espère bien. J'ai ce code qui fonctionne parfaitement sur une database mysql

<?php // visit http://php.net/pdo for more details // start error handling try { // connect $pdo = new PDO('mysql:host=localhost;dbname=name', 'name', 'password'); // enable error handling through exceptions $pdo->setAtsortingbute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // create safe query $query = $pdo->prepare("SELECT ip FROM tester WHERE state = ? ORDER BY RAND (UNIX_TIMESTAMP(NOW())) LIMIT 1"); // pass data & execute query (since the data are of ssortingng type // and therefore can be passed in this lazy way) $query->execute(array($_POST['State'])); // get value $ip = $query->fetchColumn(); // print out the IP address using $ip } catch (Exception $e) { echo "sorry, there was an error."; mail("[email protected]", "database error", $e->getMessage(), "From: [email protected]"); } if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "[email protected]"; $email_subject = "This is a test"; function died($error) { // your error code can go here echo "We are very sorry, but there were error(s) found with the form you submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists if(!isset($_POST['first_name']) || !isset($_POST['last_name']) || !isset($_POST['email']) || !isset($_POST['what']) || !isset($_POST['State']) || !isset($_POST['comments'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $what = $_POST['what']; // required $first_name = $_POST['first_name']; // required $last_name = $_POST['last_name']; // required $email_from = $_POST['email']; // required $state = $_POST['State']; // not required $comments = $_POST['comments']; // required $error_message = ""; $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; if(!preg_match($email_exp,$email_from)) { $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; } $ssortingng_exp = "/^[A-Za-z .'-]+$/"; if(!preg_match($ssortingng_exp,$first_name)) { $error_message .= 'The First Name you entered does not appear to be valid.<br />'; } if(!preg_match($ssortingng_exp,$last_name)) { $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; } if(strlen($comments) < 2) { $error_message .= 'The Comments you entered do not appear to be valid.<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Form details below.\n\n"; function clean_ssortingng($ssortingng) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$ssortingng); } $email_message .= "First Name: ".clean_ssortingng($first_name)."\n"; $email_message .= "Last Name: ".clean_ssortingng($last_name)."\n"; $email_message .= "What: ".clean_ssortingng($what)."\n"; $email_message .= "Email: ".clean_ssortingng($email_from)."\n"; $email_message .= "State: ".clean_ssortingng($ip)."\n"; $email_message .= "Comments: ".clean_ssortingng($comments)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); if (!mail($email_to, $email_subject, $email_message, $headers)) { echo "failed to send message"; } ?> <!-- include your own success html here --> Thank you for contacting us. We will be in touch with you very soon. <?php } ?> 

Lorsque quelqu'un sélectionne un état et soumet le formulaire Web, ce code se connecte à la database mysql et

sélectionne une adresse ip au hasard et l'envoie à mon email. Il est parfait.

Le problème que j'ai est que la personne pour qui je fais cela ne veut pas utiliser une database mysql donc le veut

embedded dans une database mssql.

Je sais dans le code PHP ci-dessus que je me connecte à une database mysql au lieu d'une database mssql mais

Je ne peux pas déterminer ce qui doit être changé pour que tout fonctionne.

J'ai trouvé ceci en ligne et j'ai pensé que je pourrais être capable de l'intégrer avec mon code existant mais jusqu'ici aucune chance.

 <?php $myServer = "localhost"; $myUser = "your_name"; $myPass = "your_password"; $myDB = "examples"; //connection to the database $dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer"); //select a database to work with $selected = mssql_select_db($myDB, $dbhandle) or die("Couldn't open database $myDB"); //declare the SQL statement that will query the database $query = "SELECT id, name, year "; $query .= "FROM cars "; $query .= "WHERE name='BMW'"; //execute the SQL query and return records $result = mssql_query($query); $numRows = mssql_num_rows($result); echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>"; //display the results while($row = mssql_fetch_array($result)) { echo "<li>" . $row["id"] . $row["name"] . $row["year"] . "</li>"; } //close the connection mssql_close($dbhandle); ?> 

Toute aide pour que cela fonctionne serait très appréciée. Merci tout le monde

Ali

Il semble que vous n'avez pas activé l'extension MSSQL dans le file php.ini .

Sous Linux

  • Vous findez ceci dans le file php.ini ;extension=mssql.so et remplacez par ceci: extension=mssql.so (supprimez simplement le point-virgule pour l'activer.)

  • Vous findez un file dans (si vous utilisez xampp linux) le file lampp / etc / freetds.conf. Dans ce file, vous devez append la configuration suivante.

    Ajoute ça:

    [DevSqlServer]

    hôte = 172.16.1.123

    instance = DEVAPSERVER

    port = 1433

    tds version = 7.0

  • Redémarrez votre server. et votre code PHP devrait être comme ça.

  • Ici vous pouvez voir ce que j'ai fait. DevSqlSerrver que j'ai donné dans le freetds.cof. J'ai donc besoin de donner le nom du server que j'ai donné dans freetds.conf.

      // Connect to MSSQL $connection = mssql_connect("DevSqlServer", 'sa', '****'); $db_connect=mssql_select_db("DBname",$connection); 

Et vous pouvez accéder à la database MSSQL Server.

Pour plus d'informations:

Link1

Link2