在 mysql 数据库中插入一行时,字符串值需要用引号括起来,而整数不需要。
是否有任何类或库可以自动处理这个问题,以便我可以将字段名和值的数组传递给第 3 方函数,而不必担心将字符串值放在引号中?
谢谢,
您需要担心的不仅仅是引用;您需要担心 SQL 注入。
对于新代码,使用PDO代替mysql_
ormysqli_
函数。在 PDO 中,使用准备好的语句(PDOStatement
对象)。
使用准备好的语句,您永远不必用引号将内容括起来,它会阻止 SQL 注入。
如果您使用PDO,那么您无需担心类似的事情。
查看PDO::prepare以获取一些示例。
当我使用 drupal 时,默认行为db_query("SELECT col FROM tab WHERE id=%d",$id)
会为您处理。
这类似于首先在查询中使用sprintf
with mysql_real_escape_string
。您可以自己实现它,从他们显示的代码中,注意他们使用该preg_replace_callback()
方法,您可以单击它..
传统方式,如果忽略PDO(不推荐):
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
?>