为什么我的SQL插入工作?

时间:2014-05-16 00:57:09

标签: php mysql sql

我知道这样的问题一直存在,但我看不出我的代码有什么问题。数据库工作正常,我在代码中更早地运行更新查询。

查询1:

mysql_query("INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES ('".$login."', '".$ip."', '".$details->hostname."', '".$loc."', 'success', NOW()");

查询2:

mysql_query("INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES ('".$login."', '".$ip."', '".$details->hostname."', '".$loc."', 'failure', NOW()");

以下是请求字符串的回显:

INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES ('AAL', '**.60.**.**', 'c-174-**-**-**.hsd1.**.comcast.net', 'Town, US', 'success', NOW()

1 个答案:

答案 0 :(得分:1)

看起来你错过了最后的结束)。也使用准备好的陈述。更干净,更安全。下面是一个准备语句的简单示例(改编为from here)(您还需要对PHP脚本进行其他更改才能开始使用它们)

$stmt = $mysqli->prepare("INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES (?, ?, ?, ?, ?, NOW())")
$stmt->bind_param('sssss', $login, $ip, $details->hostname, $loc, 'failure');
$stmt->execute()