【问题标题】:Insert data into MySql using nusoap web service?使用 nusoap Web 服务将数据插入 MySql?
【发布时间】:2013-10-15 19:57:32
【问题描述】:

我已创建此代码以使用 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 文件中,参数和输出都可以。我不明白为什么不将这些数据放入我的数据库中?我必须在这里错过一些东西。任何人都知道为什么会这样?提前谢谢你。

【问题讨论】:

  • 您是否尝试过调试代码以缩小问题所在?例如,是否将正确的参数传递给您的插入函数?您是否考虑过围绕数据库连接和查询添加错误处理?
  • 感谢您的回复。当我移动函数 InsertOrder 时,它将数据插入数据库但为空,因为它没有 FirstName 和 LastName 变量的概念。我认为该功能有问题。所以数据库连接工作正常。谢谢
  • 为什么不是用户名和密码字符串的数据类型? array('FirstName' =&gt; 'xsd:string', 'LastName' =&gt; 'xsd:string'),。我还建议使用PDO's preparemysql_real_escape_string(),因为 mysql_* 已被弃用

标签: php mysql web-services soap nusoap


【解决方案1】:

您的 Insert 语句看起来更像是一个更新语句。能改吗

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

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

【讨论】:

    【解决方案2】:

    我的脚本没有错误,它正在通过soap将数据插入我的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";
    }
    

    【讨论】:

      【解决方案3】:

      而不是 array('FirstName' => 'xsd:Testing', 'LastName' => 'xsd:NuSoap'),

      试试这个 array('FirstName' => 'xsd:string', 'LastName' => 'xsd:string'),

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        • 2013-05-08
        • 1970-01-01
        相关资源
        最近更新 更多