相关疑难解决方法(0)

如何在PHP中阻止SQL注入?

如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)

这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)

可以采取哪些措施来防止这种情况发生?

php mysql sql security sql-injection

2776
推荐指数
28
解决办法
166万
查看次数

何时在MySQL中使用单引号,双引号和后退标记

我正在尝试学习编写查询的最佳方法.我也理解保持一致的重要性.到现在为止,我已经随机使用了单引号,双引号和后退,没有任何实际想法.

例:

$query = 'INSERT INTO table (id, col1, col2) VALUES (NULL, val1, val2)';
Run Code Online (Sandbox Code Playgroud)

此外,在上面的例子中,考虑table可能是变量.

这是什么标准?你是做什么?

我一直在这里阅读类似问题的答案大约20分钟,但看起来这个问题没有明确的答案.

mysql sql quotes

605
推荐指数
11
解决办法
18万
查看次数

反引号和单引号有什么区别?我可以在上面的查询中使用IF语句吗?

codeigniter手册中写下以下内容.

$ this-> db-> select()接受可选的第二个参数.如果将其设置为FALSE,CodeIgniter将不会尝试使用反引号来保护您的字段或表名称.如果您需要复合选择语句,这非常有用.

$this->db->select('(SELECT SUM(payments.amount) FROM payments 
WHERE payments.invoice_id=4) AS amount_paid', FALSE);
$query = $this->db->get('mytable');
...
Run Code Online (Sandbox Code Playgroud)

我从一个CI应用程序中获得以下代码.

$this->db->select('slug, type, 
IF(`value` = "", `default`, `value`) as `value`', FALSE);
Run Code Online (Sandbox Code Playgroud)

Q1.反引号和单引号有什么区别?

Q2.我可以在上面的查询中使用IF语句吗?

Q3.这是什么意思?

IF(`value` = "", `default`, `value`) as `value`
Run Code Online (Sandbox Code Playgroud)

php mysql if-statement codeigniter backticks

4
推荐指数
1
解决办法
6081
查看次数