将数据插入数据库PDO错误

时间:2015-06-18 16:35:21

标签: php mysql pdo

我试图在用户登录服务器后登录用户的详细信息。我试图用这个:

  $conn = new PDO("mysql:host=localhost;dbname=user_login",'root','');
  global $dbh;
  $stmt = $dbh->prepare("INSERT INTO login_details (browser, date_time, ip_address, username) VALUES (:browser, :date_time, :ip_address, :username)");
  $stmt->bindParam(':browser', $browser);
  $stmt->bindParam(':date_time', $date_time);
  $stmt->bindParam(':ip_address', $ip_address);
  $stmt->bindParam(':username', $username);

  $browser = 'one';
  $value = $_SERVER["HTTP_USER_AGENT"];
  $stmt->execute();

  $date_time = 'one';
  $value = date('l jS \of F Y h:i:s A');
  $stmt->execute();

  $ip_address = 'one';
  $value = $_SERVER['REMOTE_ADDR'];
  $stmt->execute();

  $username = 'one';
  $value = $name;
  $stmt->execute();

很抱歉,如果我完全错了,我对此完全不了解。

由于

2 个答案:

答案 0 :(得分:0)

在您的脚本中,您使用$conn作为连接数据库的对象,那么为什么使用全局$dbh。只需使用$conn代替$dbh

答案 1 :(得分:0)

如另一个答案所述,您需要与您对PDO对象的调用保持一致。使用$conn代替$dbh,反之亦然。

您当前的代码也会执行多次SQL查询,特别是每次调用$stmt->execute()时。在大多数情况下,您甚至还没有为绑定参数指定值。

您的$value个变量也错过了标记。您只需将所需的值分配给bindParam调用中命名的变量。

试试这个

$conn = new PDO("mysql:host=localhost;dbname=user_login",'root','');
$stmt = $conn->prepare("INSERT INTO login_details (browser, date_time, ip_address, username) VALUES (:browser, :date_time, :ip_address, :username)");

$stmt->bindParam(':browser', $browser);
$stmt->bindParam(':date_time', $date_time);
$stmt->bindParam(':ip_address', $ip_address);
$stmt->bindParam(':username', $username);

$browser = $_SERVER["HTTP_USER_AGENT"];
$date_time = date('l jS \of F Y h:i:s A');
$ip_address = $_SERVER['REMOTE_ADDR'];
$username = $name;

$stmt->execute();