Запрос MySQL с переполнением стека

Я пытаюсь запросить базу данных MySQL с помощью PHP и вернуть результаты в виде JSON. Я новичок в PHP и веб-разработке, поэтому я не уверен, что я делаю неправильно. Я настроил базу данных, используя MAMP. Мои параметры печатаются, но я не получаю JSON. Я получил это далеко с помощью учебника.

РЕДАКТИРОВАТЬ: я просто зашел в phpMyAdmin, чтобы убедиться, что он работает, и когда я нажимаю на Server: localhost: 8889, появляется окно с сообщением об ошибке при обработке запроса. Код ошибки 404.

Я думаю, что это проблема, я просто не уверен, почему это не работает. Я могу переустановить MAMP.

    <?php

$user = 'root';
$password = 'root';
$db = 'TestDB';
$host = '127.0.0.1';
$port = '8889';

$first_name = filter_input(INPUT_GET, 'first_name');
$last_name = filter_input(INPUT_GET, 'last_name');
$membership_number = filter_input(INPUT_GET, 'membership_number');

echo $first_name;
echo $last_name;
echo $membership_number;

// Create connection
// $con = mysqli_connect("localhost", "root", "root", "TestDB");
// $con = mysqli_connect("localhost", "root", "root", "TestDB", "8889", $socket);
$link = mysqli_init();
$con = mysqli_real_connect($link, $host, $user, $password, $db, $port);

// Check connection
if(mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql = "SELECT * FROM NAME WHERE FIRST_NAME = \'$first_name\' and LAST_NAME = \'$last_name\' and MEMBERSHIP_NUMBER = \'$membership_number\'";

$result = mysqli_query($con, $sql);

if(!$result) {
die('Query failed: ' . mysqli_error());
}

// Check for results
// if ($result = mysqli_query($con, $sql)) {
if($result) {
// If there are results, create results array and a temporary one to hold the data
$resultArray = array();
$tempArray = array();

// Loop through each row in the result set
// while($row = $result->fetch_object()) {
while($row = mysqli_fetch_object($result)) {
// Add each row to the results array
$tempArray = $row;
array_push($resultArray, $tempArray);
}

echo $tempArray;
echo $resultArray;
echo $result;

echo json_encode($resultArray);
}

// Close connections
mysqli_close($con);

?>

0

Решение

Вы должны изменить себя $sql переменная для удаления escape-символов в одинарных кавычках. Они регистрируются как часть строки, потому что вы используете двойные кавычки для ее переноса. По сути, вы говорите базе данных для выполнения запроса «SELECT * FROM NAME WHERE FIRST_NAME = \'John\' and LAST_NAME = \'Smith\' and MEMBERSHIP_NUMBER = \'VRX78435\'Msgstr «Это приведет к ошибке, если вы запустите его напрямую, потому что экранирующие символы не экранируют.

$sql = "SELECT * FROM NAME WHERE FIRST_NAME = '$first_name' and LAST_NAME = '$last_name' and MEMBERSHIP_NUMBER = '$membership_number'";

Это должно исправить это для вас.

Также может быть проблема с вашим подключением к серверу. mysqli_query() использует результаты mysqli_connect() запустить запрос. mysqli_real_connect() возвращает только логическое значение, поэтому оно недопустимо для данного конкретного использования (по крайней мере, оно не работает на моем сервере).

Это было бы простым вопросом замены $con и тогда вы можете бросить $link переменная.

$con = mysqli_connect($host, $user, $password, $db, $port);

Эти изменения и при условии $first_name, $last_name, а также $membership_number Все они действительны, разрешен запуск сценария для меня, поэтому я надеюсь, что это поможет.

2

Другие решения

Кажется, вы используете процедурный стиль кодирования

Вместо

while($row = $result->fetch_object()) {

Тебе нужно mysqli_fetch_object в процедурном стиле

while($row = mysqli_fetch_object($result)) {
2

По вопросам рекламы [email protected]