Здесь я начинаю пытаться позвонить из приложения PhoneGap на веб-сервер, используя локальный хост XAMPP для школьного задания. У меня есть рабочий файл login.php из одного из предыдущих проектов. Однако после переноса в новый проект Eclipse не будет запускать коды PHP и, следовательно, весь проект, отображая ошибку, как показано выше: «Неустранимая ошибка: вызов функции-члена fetch_array () on null»).
Разница между проектом сейчас и предыдущими заключалась в том, где я разместил файлы PHP. Поскольку у меня больше нет подписки Microsoft Azure, я переключился на локальный хост XAMPP. В результате, также меняя расположение моего php файла с Http: //example.cloudapp/login.php в ту же папку, где у меня есть мои html-файлы, в htcdocs / project / login.php.
Вот коды login.php:
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
error_reporting(E_ERROR);
try{
$conn = new mysqli("127.0.0.1", "root", "root", "bencoolen");
$userid = $_GET["userid"];
$password = $_GET['password'];
$query = "SELECT count(*) as found from profiles where userid ='" .
$userid . "' and password = '" . $password . "'";
$result = $conn->query($query);
$count = $result->fetch_array(MYSQLI_NUM);
$json_out = "[" . json_encode(array("result"=>$count[0])) . "]";
echo $json_out;
$conn->close();
}
catch(Exception $e) {
$json_out = "[".json_encode(array("result"=>0))."]";
echo $json_out;
}
?>
[/ NOEDIT] Я убедился, что база данных «bencoolen» была создана с таблицей под названием «profile», содержащей поля «userid» и «password».
Я также скачал «Средство разработки PHP» на Eclipse, и все мои синтаксисы php выделены. Eclipse также может запускать коды javascript и html до того, как я добавлю login.php. Затмение направило меня в строку 12 с фатальной ошибкой, которая была:
$count = $result->fetch_array(MYSQLI_NUM);
Вот моя неподдерживаемая теория:
Я думаю, что они не распознают мои поля ИД пользователя и пароля, потому что файл PHP не подключен к базе данных из-за его расположения файла
я не говорю, что мой код ниже — лучший подход, но вы можете следовать и получить результат, я также работаю по тому же сценарию и добьюсь успеха.
<?php
$server = "127.0.0.1";
$user = "root";
$pass = "root";
$db = "bencoolen";
//open connection to mysql db
$connection = mysqli_connect($server,$user,$pass,$db) or die("Error " . mysqli_error($connection));
$userid = $_REQUEST['userid'];
$password = $_REQUEST['password'];
//fetch table rows from mysql db
$sql = "select * from profiles WHERE userid= '$userid' AND password = '$password'";
$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));
// echo json_encode(mysqli_num_rows($result));
if($result){
if (mysqli_num_rows($result) >= 1 ) {
$json=array("status"=>1,"message"=>"done");
echo json_encode($json);
}else{
$json=array("status"=>0,"message"=>"email or password not match!");
echo json_encode($json);
}
}else{
$json=array("status"=>0,"message"=>"error");
echo json_encode($json);
}
mysqli_close($connection); ?>
Ты можешь использовать «локальный» на месте 127.0.0.1 если вы работаете на той же машине.
и вам нужно позвонить в ваш сервис, как:
HTTP: //localhost/login.php Идентификатор_пользователя = тест&пароль = 12345
Надеюсь, это поможет вам.
Я думаю: вы должны получить эту одну запись, она будет содержать результат Count ()
$result = $db->query("SELECT COUNT(*) FROM `table`");
$row = $result->fetch_row();
echo '#: ', $row[0];