调用未定义的函数execute()



下面是我的代码。显示的错误类似

致命错误:调用第21行的未定义函数execute()

我该如何解决这个问题?

<?php 
include 'config/dbconfig.php';
include 'lib/function.php';
include  'helper/helper.php';
$db = new rootfunc();
$fm = new formate();
if(!empty($_POST['name']) or !empty($_POST['email']) or !empty($_POST['password1']) or !empty($_POST['dob']) or !empty($_POST['gender']) ){
$name = $fm->validation($_POST['name']);
$email = $fm->validation($_POST['email']);
$password = $fm->validation($_POST['password1']);
$dob = $_POST['dob'];
$gender = $fm->validation($_POST['gender']);

$query = $pdo->prepare("SELECT * FROM user_table WHERE name = ? AND email = ?");
$query = execute(array($name,$email));
$numRow = $query->rowCount();
if(!$numRow){
$query = "INSERT INTO user_table (name,email,password,dob,gender) VALUES (?,?,?,?,?)";
$query = $pdo->prepare($query);
$query->execute(array($name,$email,$password,$dob,$gender));
echo "Congrates, please login..";
}else{
echo "name and email exist..";
}

}

?>

在这两种情况下,都覆盖$query:

$query = "INSERT INTO user_table (name,email,password,dob,gender) VALUES (?,?,?,?,?)";
$query = $pdo->prepare($query);

您需要给执行一个不同的变量来保存对象,例如:

$query = "INSERT INTO user_table (name,email,password,dob,gender) VALUES (?,?,?,?,?)";
$result = $pdo->prepare($query);
$result->execute(array($name,$email,$password,$dob,$gender));

此外,您应该允许用户使用他们想要的密码/短语。不要限制密码。

当你使用密码时,永远不要将其存储为纯文本!请使用PHP的内置函数来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用password_hash()兼容包。在哈希之前,请确保您没有对密码进行转义或使用任何其他清理机制。这样做会更改密码,并导致不必要的额外编码。


我在你的代码中也注意到了这一点

$numRow = $query->rowCount();

由于该查询是SELECT查询,因此无法与rowCount()一起使用

来自文档:

PDOStatement::rowCount()返回受相应PDOStatement对象执行的最后一个DELETE、INSERT或UPDATE语句影响的行数。

对于SELECT,当您不执行COUNT()查询时,您可以在执行查询后返回这样的行数;

$rows = $result->fetchAll();
$num_rows = count($rows);

在您的情况下,没有必要检查计数——只需检查以确保执行的查询足以进入您的条件语句。

最新更新