I'm trying to fetch data from MySQL database but it won't work, otherwise other operations (adding records or updating or deleting) is working well.
Here is my code so far:
ajaxfile.php
<?php
include "config.php";
$data = json_decode(file_get_contents("php://input"));
$request = $data->request;
// Fetch All records
if($request == 1){
$userData = mysqli_query($con,"select * from users order by id desc");
$response = array();
while($row = mysqli_fetch_assoc($userData)){
$response[] = $row;
}
echo json_encode($response);
exit;
}
// Add record
if($request == 2){
$username = $data->username;
$name = $data->name;
$email = $data->email;
$userData = mysqli_query($con,"SELECT * FROM users WHERE username='".$username."'");
if(mysqli_num_rows($userData) == 0){
mysqli_query($con,"INSERT INTO users(username,name,email) VALUES('".$username."','".$name."','".$email."')");
echo "Insert successfully";
}else{
echo "Username already exists.";
}
exit;
}
// Update record
if($request == 3){
$id = $data->id;
$name = $data->name;
$email = $data->email;
mysqli_query($con,"UPDATE users SET name='".$name."',email='".$email."' WHERE id=".$id);
echo "Update successfully";
exit;
}
// Delete record
if($request == 4){
$id = $data->id;
mysqli_query($con,"DELETE FROM users WHERE id=".$id);
echo "Delete successfully";
exit;
vue.js
var app = new Vue({
el: '#myapp',
data: {
users: "",
username: "",
name: "",
email: ""
},
methods: {
allRecords: function(){
axios.post('ajaxfile.php', {
request: 1
})
.then(function (response) {
app.users = response.data;
})
.catch(function (error) {
console.log(error);
});
},
addRecord: function(){
if(this.username != ''&& this.name != ''&& this.email != ''){
axios.post('ajaxfile.php', {
request: 2,
username: this.username,
name: this.name,
email: this.email
})
.then(function (response) {
// Fetch records
app.allRecords();
// Empty values
app.username = '';
app.name = '';
app.email = '';
alert(response.data);
})
.catch(function (error) {
console.log(error);
});
}else{
alert('Fill all fields.');
}
},
updateRecord: function(index,id){
// Read value from Textbox
var name = this.users[index].name;
var email = this.users[index].email;
if(name !=''&& email !=''){
axios.post('ajaxfile.php', {
request: 3,
id: id,
name: name,
email: email
})
.then(function (response) {
alert(response.data);
})
.catch(function (error) {
console.log(error);
});
}
},
deleteRecord: function(index,id){
axios.post('ajaxfile.php', {
request: 4,
id: id
})
.then(function (response) {
// Remove index from users
app.users.splice(index, 1);
alert(response.data);
})
.catch(function (error) {
console.log(error);
});
}
},
created: function(){
this.allRecords();
}
})
So far I've tried to change .post to .get, or variations of:
app.users = response.data.users; or this.users = response.data or just app.users = response
Or users to declare as users:[] (array) instead of users:" (string)
Nothing seems to work, what could be the cause of this issue?