2013-08-05 2 views
4

Это UPDATE на мой прогресс, все еще получаю simmilar ошибку:Не удается получить доступ к mySQL, реализующему nuSOAP?

Так что в основном я не получаю возвращать данные из моего веб-службы NuSOAP при вызове функции, которая использует Mysqli запрос

Я думаю, что это из-за NuSOAP (никаких доказательств, что еще), во всяком случае вот код с NuSOAP в нем:

<?php 
// include the SOAP classes 
require_once('nuSOAP/lib/nusoap.php'); 

$host = 'mysql13.000webhost.com'; 
$user = 'a8434864_updater'; // MySQL login username 
$pass = '***'; // MySQL login password 
$database = 'a8434864_lokiupd'; // Database name 

$con=mysqli_connect($host,$user,$pass,$database); 

// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 


function OnlineStatus(){ 
return true; 
} 

function GetRegTitle(){ 
global $con; 
$SQL = "SELECT app_reg_title FROM a8434864_lokiupd._misc WHERE id = 0"; 
$result = mysqli_query($con,$SQL); // ERROR LINE 26 
if(!$result) { 
    die(mysqli_error($con)); // ERROR LINE 28 
} 
$row = mysqli_fetch_row($result); 
return $row[0]; 
} 

mysqli_close($con); 


// create the server object 
$server = new nusoap_server(); 

// Initialize WSDL support 
$server->configureWSDL('userdatawsdl', 'urn:userdatawsdl'); 


$server->register('OnlineStatus',  array(), array('result' => 'xsd:boolean')); 
$server->register('GetRegTitle',  array(), array('result' => 'xsd:string')); 

if (isset($error)) 
{ 
    $fault = 
      $server->fault('soap:Server','',$error); 
} 

// send the result as a SOAP response over HTTP $HTTP_RAW_POST_DATA 
$post = file_get_contents('php://input'); 
$server->service($post); 
?> 

со стороны клиента (клиент я использую не сделал мне сво SOA клиента плагин для Firefox) это ошибка, я получаю:

PHP Сообщение об ошибке

Предупреждение: mysqli_query(): Не удалось получить MySQLi в /home/a8434864/public_html/webservice/webservice.php на линии

PHP Сообщение об ошибке

Предупреждение: mysqli_error() [function.mysqli ошибок]: не удалось получить MySQLi в /home/a8434864/public_html/webservice/webservice.php на линии

Тем не менее, этот код работает безупречно (это то же самое, что и выше, но без NuSOAP):

<?php 
$host = 'mysql13.000webhost.com'; // Host name Normally 'LocalHost' 
$user = 'a8434864_updater'; // MySQL login username 
$pass = '***'; // MySQL login password 
$database = 'a8434864_lokiupd'; // Database name 

$con=mysqli_connect($host,$user,$pass,$database); 

// Check connection 
if (mysqli_connect_errno($con)) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

function OnlineStatus(){ 
return true; 
} 
function GetRegTitle(){ 
global $con; 
$SQL = "SELECT app_reg_title FROM _misc WHERE id = 0"; 
$result = mysqli_query($con,$SQL); 
if(!$result) { 
    die(mysqli_error($con)); // TODO: better error handling 
} 
$row = mysqli_fetch_row($result); 
return $row[0]; 
} 

echo '1:<br>'; 
print_r(OnlineStatus()); 
echo '<br>2:<br>'; 
print_r(GetRegTitle()); 
mysqli_close($con); 
?> 

Что Может ли кто-нибудь мне помочь?

+0

может быть, сервер MySQL будет вниз .. попросить ваш деньги назад – user20232359723568423357842364

+0

неправда, и вы не прочитали весь пост. –

+0

Вы действительно уверены в файле, откуда исходит ошибка? номер строки и содержимое файла не совпадают с ошибкой –

ответ

1

Исправлено. Вы должны закрыть mysql-соединение только после того, как вы зарегистрировали функции SOAP.

Как так:

$server->register('OnlineStatus',  array(), array('result' => 'xsd:boolean')); 
$server->register('GetRegTitle',  array(), array('result' => 'xsd:string')); 
mysqli_close($con); 

То, что я делал раньше:

mysqli_close($con); 
$server->register('OnlineStatus',  array(), array('result' => 'xsd:boolean')); 
$server->register('GetRegTitle',  array(), array('result' => 'xsd:string')); 

Надеется, что это кто-то helpes Если они застревают :)

2

mysql_query() принимает необязательный идентификатор ссылки в качестве опции;

resource mysql_query (string $query [, resource $link_identifier = NULL ]) 

Если идентификатор не передается в (и вы не), он попытается «угадать» соединение;

Если идентификатор ссылки не указан, предполагается последняя ссылка, открытая mysql_connect(). Если такой ссылки не обнаружено, она попытается создать такую, как если бы mysql_connect() был вызван без аргументов.

Другими словами, в вашем последнем примере, сообщение об ошибке означает, что он не может найти соединение и неявно пытается открыть новый для вас. Я подозреваю, что это связано с системой обратного вызова, используемой nuSOAP, вызывающей ваши методы, в отличие от того, что вы вызываете их непосредственно в предыдущем примере.

+0

Благодарим за полезную информацию! Намного легче решить, в чем проблема сейчас. Также я думаю, что больше не буду использовать расширение mysql: P –