Я все еще новичок в PHP и MYSQL, когда я запускаю инструкцию подготовки, чтобы вставить некоторые данные в базу данных, она возвращает false, однако я могу видеть новую строку в базе данных, кто-нибудь знает Зачем? Я ценю любую помощь. Я трачу несколько часов на то, чтобы разобраться, но не повезло. И это происходит только в инструкции INSERT. И это Вот мой кодподготовить заявление вернуть false, но вставить успешно
$query = "INSERT INTO BbUsers(u_username,u_passhash,u_emailaddr,u_validate) VALUES(?,?,?,?)";
$refArr = array("ssss", $username, $passhash, $email, $vaildHash);
$result = cleanQuery($query, $refArr);
if ($result2) {
sendEmail($email, $hash);
} else {
echo "OOps something went wrong plz try again";
exit;
}
Здесь функция для подготовки заявления
function cleanQuery($prepareState,$Arrs)
{
global $dbcon;
$refArr=array();
$res=$dbcon->prepare($prepareState);
$ref= new ReflectionClass('mysqli_stmt');
$method=$ref->getMethod("bind_param");
foreach($Arrs as $key => &$value)
{$refArr[] = &$value;
}
$method->invokeArgs($res,$refArr);
$res->execute();
$result=$res->get_result();
return $result;
}
я попытался получить информацию об ошибке от $ Реза и $ dbcon, который она возвращает 0. Вот DB выглядит подобные
CREATE TABLE BbUsers(
u_userid INTEGER PRIMARY KEY AUTO_INCREMENT ,
u_username CHAR(60) UNIQUE ,
u_passhash CHAR(100) ,
u_emailaddr CHAR(255) UNIQUE ,
u_created TIMESTAMP ,
u_lastlogin TIMESTAMP ,
u_validate CHAR(40),
INDEX (u_username , u_emailaddr)
);
Что-нибудь еще, что я пропустил>?
Большое вам спасибо, это полностью решило мою проблему, а $ result2 - просто ошибка типа. Как вы сказали, мне нужна другая функция для проверки execute(). –