使用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);
});
BTW:日志中的网络状态始终为200。
PHP方面:
// createDatabaseEntry.php
$fileName = $_POST['fileName'];
$link = mysqli_connect('localhost', 'login', 'password',
'myDatabase');
$sql = "INSERT INTO files (fileName) VALUES ('$fileName')";
可能是用fetch或dbData.append()传递变量?
答案 0 :(得分:0)
如我所见,您已连接到数据库但未执行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);
}
答案 1 :(得分:0)
代码
至少有两个问题 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));