Php 如何使用slim获取请求后数据?

Php 如何使用slim获取请求后数据?,php,sql,post,slim,Php,Sql,Post,Slim,这是一个简单的crud应用程序与苗条的框架,我正在使用mysql数据库。。。纤薄版是2.6.2。Mysql版本是5.7.8 邮递员形象: Get请求工作正常:我相信您缺少的是bind语句中参数前面的冒号。您应更正为: $stmt->bindParam(":username", $cus->Username); $stmt->bindParam(":firstname", $cus->First_Name); $stmt->bindParam(":lastnam

这是一个简单的crud应用程序与苗条的框架,我正在使用mysql数据库。。。纤薄版是2.6.2。Mysql版本是5.7.8

邮递员形象:


Get请求工作正常:

我相信您缺少的是bind语句中参数前面的冒号。您应更正为:

$stmt->bindParam(":username", $cus->Username);
$stmt->bindParam(":firstname", $cus->First_Name);
$stmt->bindParam(":lastname", $cus->Last_Name);
$stmt->bindParam(":email", $cus->Email);
$stmt->bindParam(":phone", $cus->Phone);
$stmt->bindParam(":password", $cus->Password);
$stmt->bindParam(":type", $cus->Type);
$stmt->bindParam(":status", $cus->Status);
编辑

实际上,现在我进行了更深入的研究,您正在使用小写首字母传递参数(看看Postman屏幕截图,您使用了用户名,但在代码中,您尝试分配用户名)。只需将大写的“用户名”作为Postman的post字段,或替换为以下内容:

$stmt->bindParam(":username", $cus->username);
$stmt->bindParam(":firstname", $cus->firstname);
$stmt->bindParam(":lastname", $cus->lastname);
$stmt->bindParam(":email", $cus->email);
$stmt->bindParam(":phone", $cus->phone);
$stmt->bindParam(":password", $cus->password);
$stmt->bindParam(":type", $cus->type);
$stmt->bindParam(":status", $cus->status);
编辑II

用以下循环替换所有绑定:

foreach($request->params() as $key => $val) {
    $stmt->bindParam($key, $val);
}

我认为您尝试插入的$cus->Username为空。请尝试使用$stmt->bindValue而不是$stmt->bindParam。

这看起来像是区分大小写的问题。您正在绑定表单中的参数,试图通过对应的数据库列名引用这些参数。你的邮递员屏幕截图显示输入的名字都是小写的

试一试


可能您传递的是一个空的$cus->Username.yep,我还认为在
$cus=json\u decode($request->getBody())之后
能否请您发布输出
var\u dump($cus)
C:\wamp64\www\slim\a.php:66:null如果没有冒号,驱动程序会自动添加冒号。我替换了您的bind语句,但仍然收到相同的错误,因为驱动程序会自动添加
。这个答案毫无意义。(尽管为了将来的兼容性,您应该有
,但该功能不在手册中)$stmt->bindParam(“Username”,$cus->Username);给我{“error”:{“text”:SQLSTATE[HY093]:无效参数号:未定义参数}}我看到的下一件事是,您正在尝试对非json请求进行json_解码。为什么不删除json_decode,也许可以打印$cus的值以查看它包含的内容?好的,让我尝试一下,我得到了一个与前一个类似的常见错误:Type:error异常代码:8消息:尝试获取非object的属性是否打印了用户名值?cus是------webkitformboundarybypy0dqwuxniqrzht内容处置:表单数据;name=“username”asdasdasd----webkitformboundaryby0dqwuxniqrzht--在创建$stmt->bindParam之前(“:username”,“$cus->username”);好啊像以前一样用邮递员和你的代码提出请求仍然会给我同样的错误。。{“error”:{“text”:SQLSTATE[23000]:完整性约束冲突:1048列“Username”不能为null}}谢谢。。
foreach($request->params() as $key => $val) {
    $stmt->bindParam($key, $val);
}
    $stmt->bindParam("username", $cus->username);
    $stmt->bindParam("firstname", $cus->firstname);
    $stmt->bindParam("lastname", $cus->lastname);
    $stmt->bindParam("email", $cus->email);
    $stmt->bindParam("phone", $cus->phone);
    $stmt->bindParam("password", $cus->password);
    $stmt->bindParam("type", $cus->type);
    $stmt->bindParam("status", $cus->status);