我正在练习使用 PHP 和 mySQL 连接 React 到数据库
我正在使用教程视频进行操作,一切都很好,但是当我尝试执行我的代码时 突然遇到一个错误,自己无法解决
我正在尝试获取文本输入的值并将其保存在数据库中 (抱歉,如果我写得很奇怪,我不是以英语为母语的人)
这是连接代码:
<?php
class DbConnect {
private $server = 'localhost';
private $dbname = 'react-crud-app';
private $user = 'root';
private $pass = '';
public function connect() {
try {
$conn = new PDO('mysql:host=' .$this->server .';dbname=' . $this->dbname, $this->user, $this->pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
} catch (\Exception $e) {
echo "Database Error: " . $e->getMessage();
}
}
}
?>
这是从输入中获取文本并将其放入数据库的索引代码:
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
include ('./DbConnect.php');
$objDb = new DbConnect;
$conn = $objDb->connect();
$method = $_SERVER['REQUEST_METHOD'];
switch($method){
case "POST";
$user = json_decode(file_get_contents('php://input'));
$sql = "INSERT INTO users(id, name, email, mobile, created_at) VALUES(null ,:name, :email, :mobile, :created_at)";
$stm = $conn->prepare($sql);
$created_at = date('Y-M-D');
$stm->bindParam(':name', $user->name);
$stm->bindParam(':email', $user->email);
$stm->bindParam(':mobile', $user->mobile);
$stm->bindParam(':created_at', $created_at);
if($stm->execute()){ //error shows itself right here if it helps
$response = ['status'=> 1 , 'message'=>'successful'];
}else{
$response = ['status'=> 0 , 'message'=>'was NOT successful'];
}
echo json_encode($response);
break;
}
抱歉,如果它不是一个好看的代码:(
我尝试将表项(名称,电子邮件...)作为数组执行,但再次出现相同的错误。
switch 语句中“POST”case 后面的分号(;)应该是冒号(:),以正确定义 case 块。像这样:
switch($method){
case "POST":
使用bindParam绑定参数时,应该将值作为引用传递。在您的代码中,您直接传递值而不是引用。像这样:
$stm->bindParam(':name', $user->name, PDO::PARAM_STR);
如果您有其他错误,请发布,以便我们更好地调试。