如何改进这种用PHP在mySQL中插入信息的粗俗方法?

如何改进这种用PHP在mySQL中插入信息的粗俗方法?,php,mysql,Php,Mysql,我想知道更好的方法来改进或优化这种粗俗的方法,只有在变量不是空的情况下,才可以使用PHP向mySQL数据库添加内容。 谢谢 有关使用MySQLi将数据插入MySQL的更多详细信息,请参阅 //since the values in columns value5 and value6 can be NULL $value5 = NULL $value6 = NULL //or if you want to set it to "" $value5 = "" $value6 = "" // C

我想知道更好的方法来改进或优化这种粗俗的方法,只有在变量不是空的情况下,才可以使用PHP向mySQL数据库添加内容。 谢谢

有关使用MySQLi将数据插入MySQL的更多详细信息,请参阅

//since the values in columns value5 and value6 can be NULL
$value5 = NULL
$value6 = NULL

//or if you want to set it to ""
$value5 = ""
$value6 = "" 

// Create connection
$mysqli = new mysqli($servername, $username, $password, $dbname);

/* Prepare an insert statement */
$insert_query = "INSERT INTO love_table (value_1, value_2, value_3, value_4, value_5, value_6) VALUES (?, ?, ?, ?, ?, ?)";

$stmt = $mysqli->prepare($insert_query);

/* Bind the parameters */
$stmt->bind_param("ssssss", $value1, $value2, $value3, $value4, $value5, $value6);

/* Execute the statement */
$stmt->execute();

/* close statement */
$stmt->close();

/* close connection */
$mysqli->close(); 

以及为什么我们应该使用绑定参数而不是直接使用查询()中的值。有关使用MySQLi将数据插入MySQL的更多详细信息,请参阅

//since the values in columns value5 and value6 can be NULL
$value5 = NULL
$value6 = NULL

//or if you want to set it to ""
$value5 = ""
$value6 = "" 

// Create connection
$mysqli = new mysqli($servername, $username, $password, $dbname);

/* Prepare an insert statement */
$insert_query = "INSERT INTO love_table (value_1, value_2, value_3, value_4, value_5, value_6) VALUES (?, ?, ?, ?, ?, ?)";

$stmt = $mysqli->prepare($insert_query);

/* Bind the parameters */
$stmt->bind_param("ssssss", $value1, $value2, $value3, $value4, $value5, $value6);

/* Execute the statement */
$stmt->execute();

/* close statement */
$stmt->close();

/* close connection */
$mysqli->close(); 


为什么我们应该使用绑定参数而不是直接使用查询中的值()

计划A:在列表中保留空值,并让列“default”为您想要的值

方案B:动态更改空值
…(isset($val5)?$val5:'N/A'),…


计划C:与B类似,但在SQL中,使用
COALESCE(?'N/A')

计划A:将空值保留在列表中,并将列“default”设置为所需的值

方案B:动态更改空值
…(isset($val5)?$val5:'N/A'),…


方案C:与B类似,但在SQL中,使用
COALESCE(?'N/A')

更好地使用它。它还将阻止SQL注入。是的,这里有SQL注入。最好使用它。它还将阻止SQL注入。是的,这里有SQL注入。请记住,这可能仍然容易受到SQL注入的攻击,因为您没有指定连接字符集。我从中了解了很多。。。但我仍然有一个无法解决的问题,我想传递一个7值,即uuid(),以生成uuid,但我得到了错误,因为我认为这不是字符串,所以我不能简单地在末尾添加一个s和值。。。谁能帮我一下吗?是的,你能。如果你能详细说明错误的原因,回答这个问题会很有帮助。请记住,这可能仍然容易受到SQL注入的攻击,因为你没有指定连接字符集。我从中学到了很多。。。但我仍然有一个无法解决的问题,我想传递一个7值,即uuid(),以生成uuid,但我得到了错误,因为我认为这不是字符串,所以我不能简单地在末尾添加一个s和值。。。谁能帮我一下吗?是的,你能。如果你能详细说明这个错误的问题,回答这个问题会很有帮助。