PHP准备。 Stmt - 出了什么问题?

时间:2014-04-08 16:29:22

标签: php

我试图用准备好的语句学习PHP,之前我遇到了一些令人沮丧的错误,但我自己想出来(经过4个令人沮丧的时间)。现在我收到了这个错误: 致命错误:在第15行的....中的非对象上调用成员函数bind_param()。

<?php
$host="127.0.0.1";
$port=3306;
$socket="";
$user="root";
$password="";
$dbname="ewt";

$con = new mysqli($host, $user, $password, $dbname, $port, $socket)
or die ('Could not connect to the database server' . mysqli_connect_error());

$mysqli = $con;

$stmt = $mysqli->prepare("INSERT INTO PERSOON VALUES (?,?,?,?,?,?,?,?)");
$stmt->bind_param('ssssssid',$firstName,$lastName,$email,$pass,$address,$city,$zip,$telephone);

$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$address = $_POST['address'];
$city = $_POST['city'];
$zip = $_POST['zip'];
$telephone = $_POST['telephone'];

$stmt->execute();
$stmt->close();
$mysqli->close();

我完全不知道代码有什么问题。

1 个答案:

答案 0 :(得分:2)

我会窥探两个可能出现的问题,一个无关紧要但又很重要的问题,一旦你解决了可能存在的问题就会立即咬你。

  1. 我怀疑你的表名是PERSOONPERSON,也许。
  2. 我也怀疑你的桌子上有八列。或者如果确实如此,你就没有ID列,这是一个非常糟糕的想法。
  3. 在其中任何一种情况下,您的prepare()来电都会返回false,这显然不是对象。您可以使用var_dump($mysqli->error);

    确定确切的错误

    重要的问题:您在宣布它们之前尝试使用所有提取的$_POST变量 ...