Использование нескольких файлов PHP для подключения и отправки данных в базу данных MSSQL

#php

#php

Вопрос:

Я работаю над проектом, в котором пользовательский ввод отправляется обратно в базу данных SQL. У меня есть 3 PHP-файла: 1 — создает соединение с БД. 2 — имеет функцию submitAnswers(), которая создает stmt и выполняет его. 3 — индексная страница, которая вызывает функцию для отправки данных. Я получаю эту ошибку при ее запуске:

Array ([0] => Array ([0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 [code] => -14 [2] => В sqlsrv_prepare был передан недопустимый параметр. [сообщение] => В sqlsrv_prepare был передан недопустимый параметр. ) )

Когда я запускаю весь этот код из одного файла, он работает — подключается к моей базе данных и записывает в нее. Я предполагаю, что это связано с тем, что я не знаю, как использовать require_once и / или include

Это код для каждого файла.

db.inc.php

 <?php


$serverName = "localhost\sqlexpress";  

/* Get UID and PWD from application-specific files.  */  
$uid = file_get_contents("C:AppDatauid.txt");  
$pwd = file_get_contents("C:AppDatapwd.txt");  
$connectionInfo = array( "UID"=>$uid,  
                     "PWD"=>$pwd,  
                     "Database"=>"mydb");  

/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  

if( $conn === false )  
{  
    echo "Unable to connect.</br>";  
    die( print_r( sqlsrv_errors(), true));  
}
 

functions.inc.php

 <?php

function submitAnswers(){

$sql = "INSERT INTO [dbo].[testtable] (firstname, lastname) VALUES (?, ?)";
$params = array("John", "Doe");
$stmt = sqlsrv_prepare( $conn,  $sql, $params);
   
if($stmt)
{
    echo "Statement prepared.n";
} 
else 
{
    echo "Error in executing statement.n";
    
    die( print_r( sqlsrv_errors(), true));
}
/* Execute the statement. Display any errors that occur. */  
if( sqlsrv_execute( $stmt))  
{  
      echo "Statement executed.n";  
}  
else  
{  
     echo "Error in executing statement.n";  
     die( print_r( sqlsrv_errors(), true));  
}  
header("location: success.php");
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);
exit();

}
 

index.php

 <?php

require_once 'db.inc.php';
require_once 'functions.inc.php';

submitAnswers();
 

Как я уже сказал, причина, по которой я разделяю это на три файла, заключается в том, что мне сказали, что это хорошая практика.

Любая помощь будет высоко оценена. Спасибо, Том.

Комментарии:

1. Добавьте это в начало основного скрипта, появится больше ошибок. ini_set(‘display_errors’, 1); ini_set(‘display_startup_errors’, 1); error_reporting(E_ALL);

2.Может возникнуть проблема с поиском файлов file. В зависимости от того, какой php был настроен, он может не отображаться в текущем каталоге. require_once __DIR__.'/db.inc.php'; __DIR__ это магическая константа.

3. Внутри submitAnswers() , что $conn должно быть внутри? Откуда это должно исходить? Достаточно ли умен PHP, чтобы понять это? (Подсказка: последний ответ — «нет».)

4. @miken32 да, я пытался обернуть код подключения к БД в функцию и вернуть $conn, но это тоже не сработало.