Используя React-Native и fetch (), я хочу создать новую запись в базе данных, используя скрипт PHP. Сам скрипт PHP работает, успешно протестировал его на HTML-странице.
Но я пока не могу заставить работать мою версию Javascript fetch ().
// App.js
const dbData = new FormData();
dbData.append(
'fileName', 'fileNameTest',
);
fetch('http://myurl.com/createDatabaseEntry.php', {
headers: {
'Content-Type': 'multipart/form-data',
},
method: 'POST',
body: dbData,
}).then((res) => {
console.log('Database response: ', res);
})
.catch((error) => {
console.log('DB error: ', error);
});
Кстати: состояние сети в журналах всегда 200.
PHP сторона:
// createDatabaseEntry.php
$fileName = $_POST['fileName'];
$link = mysqli_connect('localhost', 'login', 'password',
'myDatabase');
$sql = "INSERT INTO files (fileName) VALUES ('$fileName')";
Вероятно, речь идет о передаче переменных с помощью fetch или dbData.append ()?
В коде есть как минимум две проблемы
Нет ответа echo
изд php
Вы только вход Response
объект, где вы, вероятно, ожидаете использовать Response.json()
, Response.text()
, Response.arrayBuffer()
или же Response.blob()
читать ответ от php
как JSON
, простой текст, ArrayBuffer
или Blob
fetch('http://myurl.com/createDatabaseEntry.php', {
method: 'POST',
body: dbData,
})
.then(res => res.text()).then(text => console.log(text))
.catch(error => console.error('DB error: ', error));
Как я вижу, вы подключились к базе данных, но не выполнили оператор INSERT.
Пожалуйста, не забудь
1) побег аргументов
2) обработка ошибок
$filename = mysqli_real_escape_string($link, $fileName);
$sql = "INSERT INTO files (fileName) VALUES ('$filename')";
if (true === mysqli_query($link, $sql)) {
echo 'Insert done';
} else {
echo 'Error: ' . mysqli_error($link);
}