【发布时间】:2019-07-26 03:30:47
【问题描述】:
我有一个问题。
今天,我做了一个android应用程序,用于将数据插入MySQL数据库。
当我尝试插入 String 类型(例如:name)时,记录中会显示:"name"。
如何从插入的字符串中删除"
这是我的 PHP 脚本:
<?php
require "connect.php";
$firstHash = substr(str_shuffle(str_repeat("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRSTUWYZX", 5)), 0, 5);
$secondHash = substr(str_shuffle(str_repeat("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRSTUWYZX", 5)), 0, 20);
$file_path_URL = "";
$id = "PRD-$firstHash-$secondHash";
$name = $_POST["name"];
$description = $_POST["description"];
$price = $_POST["price"];
$state = $_POST["state"];
$category = $_POST["category"];
$file_path = "uploads/";
$response = array();
if (isset($_FILES["upload_file"]))
{
$target_file_name = $file_path .basename("$id.png");
if(file_exists($target_file_name))
{
$success = false;
$message = "Name already exist";
}
else
{
if (move_uploaded_file($_FILES["upload_file"]["tmp_name"], $target_file_name))
{
$photoPath = "$file_path_URL$id.png";
$query = "INSERT INTO `produkty`(`ID`, `Nazwa`, `Opis`, `Cena`, `Stan`, `Zdjecie`, `Kategoria`) VALUES ('$id', '$name', '$description', $price, $state, '$photoPath', '$category')";
$result = mysqli_query($conn, $query);
if(!$result)
{
$success = false;
$message = "Error on insert data";
}
else
{
$success = true;
$message = "Add product successfuly";
}
}
else
{
$success = false;
$message = "Error while uploading";
}
}
}
else
{
$success = false;
$message = "Required Field Missing";
}
$response["success"] = $success;
$response["message"] = $message;
$json = json_encode($response);
echo ($json);
?>
Android中负责获取用户输入数据的方法:
private void getValues()
{
Log.v(TAG, "getValues(): init");
EditText nameET = findViewById(R.id.nameET);
EditText descriptionET = findViewById(R.id.descriptionET);
EditText priceET = findViewById(R.id.priceET);
EditText categoryET = findViewById(R.id.categoryET);
CheckBox stateCHB = findViewById(R.id.checkBox);
String name = nameET.getText().toString();
String description = descriptionET.getText().toString();
Float price = Float.valueOf(priceET.getText().toString());
String category = categoryET.getText().toString();
boolean state;
if (stateCHB.isChecked())
{
state = true;
}
else
{
state = false;
}
sendDataToServer(name, description, price, state, category, imagePath);
Log.v(TAG, "getValues(): end");
}
我把它像字符串一样发布到 PHP 中。这是一个错误?
我第一次从 Android 应用程序插入 MySQL 数据库。 请帮帮我!
【问题讨论】:
-
使用。参数化。查询。 您对数据库的所有担忧都将结束!现在,你的代码乞求黑客通过SQL注入窃取你的所有数据
-
我是使用 MySQL 数据库的初学者。我以后会学习数据库的安全性,但是感谢您对此的关注。
-
没有。如果您告诉自己将来会学习它,那么您将永远不会学习它。另外:没有任何单一的理由不 使用参数化查询。它们性能更好,更具可读性,使您免受大量潜在错误的影响,并完全保护您免受 SQL 注入攻击。相信我:现在就以正确的方式去做,或者永远以错误的方式去做。
-
好的,谢谢您的建议