PHP - SQL server

chattola79

Nuovo Utente
30 Ott 2013
2
0
0
Ciao a tutti
ho sempre programmato in ambiente LAMP/WAMP ma ora ho bisogno di connettere un'applicazione ad un database SQL Server
Ho un pc XP Service pack2
Ho installato SQL Server e con Toad ho verificato che funziona
Cosa serve fare per la connessione di php al nuovo db????

Grazie in anticipo....!!
 
ciao, io utilizzo questa funzione che mi esegue tutti i comandi sql ritornando i dovuti risultati,
in questo modo non ho nessuna chiamata sql all'interno degli script php
la funzione è "require" ...
la variabile OPlog quando settata manda messaggi di log nel file "php54_errors.log" ed è usata in tutti gli script

PHP:
<?php

$OPlog = 1;

function exec_DB($CmdType, $sql) {
  global $swN,$OPlog,$data,$data_val;

  $OPdbHOST = 'server_name';
  $OPdbUSER = 'user_name';
  $OPdbPASS = 'Password';
  $OPdbNAME = 'db_name';

  if ($OPlog) error_log("$swN $CmdType : $sql", 0);

  try { $db = new PDO("sqlsrv:Server=$OPdbHOST;Database=$OPdbNAME", "$OPdbUSER", "$OPdbPASS"); }
  catch (PDOException $e) { die( print_r( 'Connection failed : ' . $e->getMessage(), true)); }

  if ($CmdType == "select") {
    $sth = $db->prepare($sql); $sth->execute(); $data = $sth->fetchall(PDO::FETCH_NUM);
    return $OPdbresult = count($data);
  }

  if ($CmdType == "select_val") {
    $sth = $db->prepare($sql); $sth->execute(); $data_val = $sth->fetchall(PDO::FETCH_NUM);
    return $OPdbresult = count($data_val);
  }

  if ($CmdType == "insert" or $CmdType == "update" or $CmdType == "delete") {
    return $OPdbresult = $db->exec($sql);
} }

?>

ciao
 
Ultima modifica di un moderatore:
Grazie !
Spulciando per il web oggi ho trovato anch'io l'oggetto PDO che ho provato ad usare per il db che si trova di default appena l'installazione di SQL server
Ora mi trovo di fronte ad un 'ostacolo' che trovo assurdo ... uso Toad ma non riesco a creare un mio db:
File -> new -> database
Name: indico il nome di un nuovo db
E mi dà questo errore:

System.ArgumentNullException
Value cannot be null.
Stack Trace:
at System.RuntimeType.GetField(String name, BindingFlags bindingAttr)
at Quest.Toad.SqlServer.Doe.Utils.Attributes.AttributesUtils.GetIValuedAttributeValue[TypeAttribute,TypeValue](Enum eValue)
at Quest.Toad.SqlServer.Doe.Databases.DatabaseProperties.GenerateScript(String extPropertiesScript)
at Quest.Toad.SqlServer.Doe.Databases.DatabaseEditForm.GetScript()
at Quest.Toad.Doe.BaseDoeForm.Execute()
at Quest.Toad.SqlServer.Doe.Base.SqlServerDoeForm.Execute()
at Quest.Toad.Doe.BaseDoeForm.buttonPanelControl_OKButtonClick(Object sender, EventArgs e)
at Quest.Toad.Controls.ButtonPanelControl.DoOkButtonClicked(Object sender, EventArgs args)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at DevExpress.XtraEditors.BaseButton.OnClick(EventArgs e)
at DevExpress.XtraEditors.BaseButton.OnMouseUp(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at DevExpress.Utils.Controls.ControlBase.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



Che significa ??
 
scusa non è semplice capire .... occorre conoscere tutte le condizioni, abbi pazienza, io uso ancora il vecchio e caro DOS

ho diversi file txt che contengono la struttura del database e poi con il comando sqlcmd li eseguo ....
di seguito un estratto ....

Codice:
USE master
GO
IF  EXISTS ( SELECT name FROM sys.databases WHERE name = N'nomeDB' ) DROP DATABASE nomeDB;
CREATE DATABASE nomeDB ON PRIMARY
	( NAME = N'nomeDB', FILENAME = N'C:\MSSQL\DATA\nomeDB.mdf', SIZE = 8192KB, FILEGROWTH = 1024KB, MAXSIZE = UNLIMITED )
LOG ON 
	( NAME = N'nomeDB_log', FILENAME = N'C:\MSSQL\DATA\nomeDB.ldf', SIZE = 1024KB, FILEGROWTH = 10%, MAXSIZE = UNLIMITED )
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'nomeDB', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) EXEC nomeDB.dbo.sp_fulltext_database @action = 'enable';
GO
EXEC nomeDB.sys.sp_addextendedproperty @name=N'MS_Description', @value=N'nomeDB OLTP Database' 
GO

-----

del "%Opt_CmdFile%" 2>nul

type "%Opt_sqlpath%\nomeDB_0_CreateDB.txt"		>>"%Opt_CmdFile%"
type "%Opt_sqlpath%\nomeDB_1_USEDB.txt"			>>"%Opt_CmdFile%"
type "%Opt_sqlpath%\nomeDB_1b_CreateRules.txt"		>>"%Opt_CmdFile%"
type "%Opt_sqlpath%\nomeDB_2_CreateTables.txt"		>>"%Opt_CmdFile%"
type "%Opt_sqlpath%\nomeDB_3_GrantTables.txt"		>>"%Opt_CmdFile%"

sqlcmd %Opt_svrname% -i "%Opt_CmdFile%" -o "%Opt_LogFile%"

puoi sostituire il nomeDB con ciò che preferisci e non dovresti avere problemi
ciao
 

Discussioni simili