Conexión php con sqlserver rest

silent specter

Lanero Regular
30 Mar 2007
5
Hola a todos, a ver si alguien me puede ayudar con esto se lo agradecería mucho:
Tengo una aplicación ya hecha con codeigniter en php y bd en mysql, y hay un erp con una bd externa en sql server 2008 r2, tengo que hacer consultas y guardar algunos datos de la bd del erp (o integrarla) por servicios rest pero no he logrado hacer la conexión, les agradecería mucho si me pueden ayudar.
 
Muchas gracias por la respuesta, yo tengo acceso al servidor de sql server, seria para montar el archivo rest ahí, y configurar la conexión por ahí, lo que no se es que le tengo que instalar a ese servidor para que corra archivos php y como tengo que hacer la conexión, no se si estoy muy perdido o que me recomienda como debe ser, mil gracias.
 
Lo mismo que *unix, la versión PHP que necesite instalada y configurada en el OS y un servidor Web que soporte PHP. Creo que para Windows la solución más inmediata es XAMPP.
 
Este codigo lo tengo, ya me conecta a la bd, pero me saca este error

Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102
Código:
 => 102 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near '`'. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near '`'. ) )


yo  le paso por url la tabla y el id, eso con mysql funciona muy bien pero aca no me quiere funcionar no se cual es el error. 


<?php


$method = $_SERVER['REQUEST_METHOD'];
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
$input = json_decode(file_get_contents('php://input'),true);

// connect to the sqlserver database
$serverName = "xxxxx"; //serverName\instanceName
$connectionInfo = array( "Database"=>"xxxx", "UID"=>"xxxx", "PWD"=>"xxxx");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

// retrieve the table and key from the path
$table = preg_replace('/[^a-z0-9_]+/i','',array_shift($request));
$key = array_shift($request)+0;


switch ($method) {
  case 'GET':
    $sql = "select * `$table`".($key?" WHERE ter_coda=$key":''); break;
  case 'PUT':
   $sql = "update `$table` set $set where ter_coda=$key"; break;
  case 'POST':
    $sql = "insert into `$table` set $set"; break;
  case 'DELETE':
    $sql = "delete `$table` where ter_coda=$key"; break;
}

// excecute SQL statement
$result = sqlsrv_query($conn,$sql);

// die if SQL statement failed
if (!$result) {
  http_response_code(404);
  die( print_r( sqlsrv_errors(), true));
}

// print results, insert id or affected row count
if ($method == 'GET') {
  if (!$key) echo '[';
  for ($i=0;$i<sqlsrv_num_rows($result);$i++) {
    echo ($i>0?',':'').json_encode(sqlsrv_fetch_object($result));
  }
  if (!$key) echo ']';
} elseif ($method == 'POST') {
  echo sqlsrv_insert_id($link);
} else {
  echo sqlsrv_affected_rows($link);
}

// close sqlserver connection
sqlsrv_close($conn);
 
Bueno, el error lo dice todo, sólo es un error de sintaxis de SQL, SQL Server no soporta la comillas hacía atrás para separar los nombres de las tablas, en SQL Server es "[]" o comillas doble, [$tabla], "$tabla", quita la comillas hacía atrás del string.
 

Los últimos temas