更新!我设法解决了我在数据库中输入的问题,但现在我遇到了另一个问题。当我在数据库中插入 1 个元素时,我的提交方法会创建 2 行,其中 1 行为空,1 行包含我的值。
后.php
public function addComment(){
// Create query
$query = 'INSERT INTO ' . $this->table2 . ' SET content = :content,
rating = :rating, doctor = :doctor';
// Prepare statement
$stmt = $this->conn->prepare($query);
// Clean data
$this->content = htmlspecialchars(strip_tags($this->content));
$this->rating = htmlspecialchars(strip_tags($this->rating));
$this->doctor = htmlspecialchars(strip_tags($this->doctor));
// Bind data
$stmt->bindParam(':content', $this->content);
$stmt->bindParam(':rating', $this->rating);
$stmt->bindParam(':doctor', $this->doctor);
// Execute query
if($stmt->execute()) {
return true;
}
// Print error if something goes wrong
printf("Error: %s.n", $stmt->error);
return false;
}
在这里,我有addComment功能。所有变量都是私有的$table 2 = 'com'; 公共$content;公共$rating; 公共$doctor;
add_comment.php
// Instantiate DB & connect
$database = new Database();
$db = $database->connect();
// Instantiate blog post object
$post = new Post($db);
// Get raw posted data
$data = json_decode(file_get_contents("php://input"));
$post->content = $data->content;
$post->rating = $data->rating;
$post->doctor = $data->doctor;
// Create post
if($post->addComment()) {
echo json_encode(
array('message' => 'Post Created')
);
} else {
echo json_encode(
array('message' => 'Post Not Created')
);
}
应用.js
class App extends Component {
constructor(props) {
super(props);
this.state = {
content: '',
rating: '',
doctor: '',
error:null
}
}
handleFormSubmit = e => {
e.preventDefault();
axios({
method: 'post',
url: 'http://localhost/fak/api/post/add_comment.php',
headers: { 'content-type': 'application/json' },
data: this.state,
})
.then(result => {
console.log(result.data)
})
.catch(error => this.setState({ error: error.message }));
};
render() {
return (
<div className="App">
<p>Add comment:</p>
<div>
<form action="#" >
<label>Message</label>
<textarea id="content" name="content" placeholder="Write something.."
onChange={e => this.setState({ content: e.target.value })}
value={this.state.message}
></textarea>
<input type="text" id="rating" name="rating" placeholder="Rating"
value={this.state.rating}
onChange={e => this.setState({ rating: e.target.value })}
/>
<label>Rating</label>
<label>Doctor name:</label>
<input type="text" id="doctor" name="doctor" placeholder="Doctor name"
value={this.state.doctor}
onChange={e => this.setState({ doctor: e.target.value })}
/>
<input type="submit" onClick={e => this.handleFormSubmit(e)} value="Submit" />
</form >
</div>
</div>
);
}
}
export default App;
您在前端设置的数据密钥与您在后端设置的数据密钥完全不同。
你需要这样的东西:
this.state = {
content: '',
rating: '',
doctor: '',
error:null
}
// You need to adapt it everywhere you use `this.state`