如果插入用户输入而不修改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)
可以采取哪些措施来防止这种情况发生?
为什么一个人不应该使用mysql_*
功能的技术原因是什么?(例如mysql_query()
,mysql_connect()
或mysql_real_escape_string()
)?
即使他们在我的网站上工作,为什么还要使用其他东西?
如果他们不在我的网站上工作,为什么我会收到错误
警告:mysql_connect():没有这样的文件或目录
我有一个.sql
导出文件phpMyAdmin
.我想使用命令行将其导入到不同的服务器中.
我有一个Windows Server 2008 R2安装.我把.sql
文件放在C盘上,我尝试了这个命令
database_name < file.sql
Run Code Online (Sandbox Code Playgroud)
它不起作用我得到语法错误.
什么之间的区别INNER JOIN
,LEFT JOIN
,RIGHT JOIN
并FULL JOIN
在MySQL的?
我正在使用MySQL命令行实用程序,可以在数据库中导航.现在我需要查看用户帐户列表.我怎样才能做到这一点?
我正在使用MySQL版本5.4.1
.
我正在尝试安装MySQL_python适配器的1.2.2版本,使用使用该--no-site-packages
选项创建的新virtualenv .PyPi中显示的当前版本是1.2.3.有没有办法安装旧版本?我发现一篇文章说这应该这样做:
pip install MySQL_python==1.2.2
Run Code Online (Sandbox Code Playgroud)
但是,安装后,它仍会在站点包中显示MySQL_python-1.2.3-py2.6.egg-info.这是这个包特有的问题,还是我做错了什么?
我怎样才能重新在AUTO_INCREMENT
一个领域?我希望它1
再次开始计数.
由于MySQL似乎没有任何"布尔"数据类型,你滥用'哪种数据类型'来存储MySQL中的真/假信息?
特别是在写入和读取PHP脚本的上下文中.
随着时间的推移,我使用并看到了几种方法:
以上都不是最佳的.我更倾向于使用tinyint 0/1变体,因为PHP中的自动类型转换非常简单地给出了布尔值.
那你使用哪种数据类型?有没有为布尔值设计的类型,我忽略了?您是否看到使用某种类型的优点/缺点?
我正在设置一个新服务器,并希望在我的Web应用程序中完全支持UTF-8.我过去曾在现有的服务器上尝试过此操作,但最终似乎不得不回归ISO-8859-1.
我在哪里需要设置编码/字符集?我知道我需要配置Apache,MySQL和PHP来执行此操作 - 是否有一些我可以遵循的标准清单,或者可能是在出现不匹配的地方进行故障排除?
这适用于运行MySQL 5,PHP,5和Apache 2的新Linux服务器.
mysql ×10
sql ×4
php ×3
command-line ×2
sqldatatypes ×2
apache ×1
boolean ×1
database ×1
datetime ×1
import ×1
inner-join ×1
join ×1
linux ×1
mysql-python ×1
mysql5 ×1
outer-join ×1
pip ×1
pypi ×1
python ×1
security ×1
timestamp ×1
utf-8 ×1