I want to call a specific function from my database.php
file, and get the returned value. Here I am trying to do this:
js:
function submit_verification_code(){
$.ajax({
url: "database.php",
type: "post",
data: ({
'code': code_entered,
}),
dataType:"text",
context: this,
success : function(response) {
console.log('RESPONSE: ' + response);
//OPTIONAL_FUNCTION_TO_DO_SOMETHING_WITH_THE_RESPONSE(response);
},
error: function(jqXHR,textStatus,errorThrown){
//OPTIONAL_FUNCTION_TO_DO_SOMETHING_WITH_THE_ERROR(jqXHR);
console.log(errorThrown);
}
});
}
database.php
if(isset($_POST['code'])){
does_code_match($_POST['code']);
}
function does_code_match($code){
connect();
die('test');
$sql = 'select * from emailstobeverified where email=';
$sql .= "'" . $_SESSION['email'] . "'";
$sql .= ' and verification_code=';
$sql .= $code;
$sql .= ';';
$count = query($sql)->num_rows;
die(strval($count));
disconnect();
echo strval($count);
exit;
//Once you've outputted, make sure nothing else happens
}
does_code_match
function executes, and the console log prints <br />
when console.log("RESPONSE" + response)
is called. But I want it to print the value of $count
EDIT:
There is a problem with connect()
function. If I call die('test')
just before calling connect()
, it returns a response! It says "hello world" in the console. If I call it directly AFTER calling connect()
, it prints this:
<b>Warning</b>: Use of undefined constant conn - assumed 'conn' (this will throw an Error in a future version of PHP) in <b>C:\xampp2\htdocs\database.php</b> on line <b>72</b><br />
<br />
<b>Warning</b>: Use of undefined constant dbhost - assumed 'dbhost' (this will throw an Error in a future version of PHP) in <b>C:\xampp2\htdocs\database.php</b> on line <b>72</b><br />
<br />
<b>Warning</b>: Use of undefined constant dbuser - assumed 'dbuser' (this will throw an Error in a future version of PHP) in <b>C:\xampp2\htdocs\database.php</b> on line <b>72</b><br />
<br />
<b>Warning</b>: Use of undefined constant dbpass - assumed 'dbpass' (this will throw an Error in a future version of PHP) in <b>C:\xampp2\htdocs\database.php</b> on line <b>72</b><br />
<br />
<b>Warning</b>: Use of undefined constant db - assumed 'db' (this will throw an Error in a future version of PHP) in <b>C:\xampp2\htdocs\database.php</b> on line <b>72</b><br />
test
and the response is <br />
Connect function:
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$db = "example";
$conn;
function connect(){
$GLOBALS[conn] = new mysqli($GLOBALS[dbhost], $GLOBALS[dbuser], $GLOBALS[dbpass],$GLOBALS[db]) or die("Connect failed: %s\n". $GLOBALS[conn] -> error);
}
Change your jQuery to the following:
$.ajax({
url: "database.php",
type: "post",
dataType: "json",
data: ({
code: code_entered,
}),
context: this,
success : function(response) {
console.log(response);
//OPTIONAL_FUNCTION_TO_DO_SOMETHING_WITH_THE_RESPONSE(response);
},
error: function(jqXHR,textStatus,errorThrown){
console.log(jqXHR);
//OPTIONAL_FUNCTION_TO_DO_SOMETHING_WITH_THE_ERROR(jqXHR);
}
});
Then change your PHP to the following:
if(isset($_POST['code'])){
does_code_match($_POST['code']);
//no need to call echo again
}
function does_code_match($code){
connect();
$sql = 'select * from emailstobeverified where email=';
$sql .= "'" . $_SESSION['email'] . "'";
$sql .= ' and verification_code=';
$sql .= $code;
$sql .= ';';
error_log('Adding code to be verified with query: ' . $sql);
$count = query($sql)->num_rows;
disconnect();
//I can't speak for the above code, I'm assuming it works.
error_log("CODE MATCHES? " . $count);
error_log(json_encode($count));
//Not sure why you're doing this, but I assume it's for testing only
echo json_encode($count);
exit;
//Once you've outputted, make sure nothing else happens
}
What kind of stuff do you see in your console.log(response);
output? Once you start developing your environment, you will probably start to send back an array of responses instead of just a value.
just echo $count
$count = query($sql)->num_rows;
disconnect();
echo $count;
If you encode the count, on the receiving end, you will have to decode the json first.
When referencing array keys, you must enclose them in quotes, change your function to the following:
function connect(){
$GLOBALS['conn'] = new mysqli($GLOBALS['dbhost'], $GLOBALS['dbuser'], $GLOBALS['dbpass'],$GLOBALS['db']) or die("Connect failed: %s\n". $GLOBALS['conn'] -> error);
}
Also, in general, this is a strange way of storing global variables, you should look into using the $_ENV
array instead.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.