已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我正在练习用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;
}
对不起,如果它不是一个真正好看的代码:(
我试图执行表项(名称,电子邮件...)作为一个数组,但有同样的错误再次。
1条答案
按热度按时间xnifntxz1#
分号(; switch语句中“POST”case后面的)应该是冒号(:),以正确定义case块。就像这样:
当使用bindParam绑定参数时,您应该将值作为引用传递。在代码中,直接传递值而不是引用。就像这样:
我看到的另一个可能的错误是,在SQL查询中,你有五个占位符,但是,你只绑定了四个参数,那么你也应该为:id占位符绑定一个值,因为你已经在SQL查询中包含了它。因为它被设置为null,你可以用null绑定它,如下所示:
如果您有不同的错误,请发布它,以便我们更好地调试它。