Вмъкване на данни в MySql с помощта на уеб услугата nusoap?

Създадох този код за вмъкване на данни в моята база данни с помощта на nusoap. Всичко работи добре, но данните не се въвеждат в моята база данни.

Ето кода

require_once('nusoap/nusoap.php');

$server = new soap_server();

$server->configureWSDL('Insert Order', 'urn:InsertOrder');

$server->soap_defencoding = 'utf-8';

$server->register(
    'InsertOrder',
    array('FirstName' => 'xsd:Testing', 'LastName' => 'xsd:NuSoap'),
    array('return' =>'xsd:boolean'),
    'urn:InsertOrderwsdl', 
    'urn:InsertOrderwsdl#InsertOrder', 
    'rpc', 
    'literal'      
);

function InsertOrder($FirstName, $LastName) {

$connect = mysql_pconnect("localhost","root","");
if ($connect) {       
    if(mysql_select_db("database", $connect)) {
  mysql_query("INSERT INTO myuser SET FirstName='$FirstName',     LastName='$LastName'");   
        return true;
    }
}
return false;
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

Ето wsdl файла:

<definitions targetNamespace="urn:InsertOrder">
<types>
<xsd:schema targetNamespace="urn:InsertOrder">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
</xsd:schema></types>
<message name="InsertOrderRequest">
<part name="FirstName" type="xsd:Testing"/>
<part name="LastName" type="xsd:NuSoap"/>
</message>
<message name="InsertOrderResponse">
<part name="return" type="xsd:boolean"/>
</message><portType name="Insert OrderPortType">
<operation name="InsertOrder">
<input message="tns:InsertOrderRequest"/>
<output message="tns:InsertOrderResponse"/>
</operation>
</portType>
<binding name="Insert OrderBinding" type="tns:Insert OrderPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="InsertOrder">
<soap:operation soapAction="urn:InsertOrderwsdl#InsertOrder" style="rpc"/>
<input>
<soap:body use="literal" namespace="urn:InsertOrderwsdl"/>
</input>
<output>
<soap:body use="literal" namespace="urn:InsertOrderwsdl"/>
</output>
</operation></binding>
<service name="Insert Order">
<port name="Insert OrderPort" binding="tns:Insert OrderBinding">
<soap:address location="http://localhost/nuSoap/MyService.php"/>
</port>
</service>
</definitions>

Във файла wsdl параметрите и изходът са наред. Това, което не разбирам, е защо не поставя тези данни в моята база данни? трябва да пропусна нещо тук. Някой има ли идея защо се случва това? Благодаря ви предварително.


person DanyBoy    schedule 15.10.2013    source източник
comment
Опитвали ли сте изобщо да дебъгвате кода си, за да стесните къде се крие проблемът? Например правилните параметри предават ли се на вашата функция за вмъкване? Обмисляли ли сте да добавите обработка на грешки около вашата DB връзка и заявка?   -  person Mike Brant    schedule 16.10.2013
comment
Благодаря ви за отговора. Когато преместя функцията InsertOrder, тя вмъква данните в базата данни, но празна, защото няма понятието FirstName и LastName променлива. Мисля, че има нещо нередно с тази функция. Така че DB връзката работи добре. Благодаря ти   -  person DanyBoy    schedule 16.10.2013
comment
защо типът данни не е низ от потребителско име и парола? array('FirstName' => 'xsd:string', 'LastName' => 'xsd:string'),. Мога ли също да предложа използването на PDO's prepare или mysql_real_escape_string(), тъй като mysql_* е отхвърлен   -  person Waygood    schedule 28.10.2013


Отговори (3)


Вашето изявление за вмъкване изглежда по-скоро като изявление за актуализиране. Бихте ли променили

mysql_query("INSERT INTO myuser SET FirstName='$FirstName',     LastName='$LastName'");

to

mysql_query("INSERT INTO myuser(FirstName,LastName) values('$FirstName', '$LastName')");
person Rolox    schedule 05.12.2013

моят скрипт няма грешка и вмъква данни в моята таблица mysql чрез сапун и се надявам, че сте направили нещо нередно във връзката си с база данни. провери отново! или мисля, че имате sql синтактична грешка във вашата заявка за вмъкване. по-долу е моят код:

$sql="INSERT INTO employee (ename) VALUES('".$employee_name."')";
$res=mysql_query($sql);
if($res==true){
    return "Employee inserted";
}else{
    return "data not inserted";
}
person ashique    schedule 01.05.2015

вместо array('FirstName' => 'xsd:Testing', 'LastName' => 'xsd:NuSoap'),

опитайте този масив ('FirstName' => 'xsd:string', 'LastName' => 'xsd:string'),

person Kadir YAŞAR    schedule 17.01.2019