我无法插入php oracle记录-错误prepare()null
我将一个mysql代码改编为oracle,但我从上面得到了这个错误,我已经寻找了很长时间,但我找不到任何可以帮助我的东西我无法插入php oracle记录-错误prepare()null,php,oracle,Php,Oracle,我将一个mysql代码改编为oracle,但我从上面得到了这个错误,我已经寻找了很长时间,但我找不到任何可以帮助我的东西 Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\login_oracle\funcs\funcs.php:120 Stack trace: #0 C:\xampp\htdocs\login_oracle\registro.php(61):
Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\login_oracle\funcs\funcs.php:120 Stack trace: #0 C:\xampp\htdocs\login_oracle\registro.php(61): registraUsuario('wae', '$2y$10$kmC83r2H...', 'wqe', 'wad@awd.cl', 0, '33fc8f862db7095...', 2) #1 {main} thrown in C:\xampp\htdocs\login_oracle\funcs\funcs.php on line 120
conexion.php
<?php
// $mysqli=new mysqli("localhost","root","","login"); //servidor, usuario de base de datos, contraseña del usuario, nombre de base de datos
// if(mysqli_connect_errno()){
// echo 'Conexion Fallida : ', mysqli_connect_error();
// exit();
// }
try //significa que intente conectar y si hay un fallo que tome el error y pase a catch
{
$mysqli = new PDO('oci:dbname=localhost', 'TRABAJOFINAL','TRABAJOFINAL');
}
catch (Exception $e)
{
die('Error: ' .$e->GetMessage()); //getmessage es una funcion o metodo del objeto e
}
finally
{
$mysqli = null; //vacio la memoria
}
?>
它还有更多的代码,在funcs.php中调用函数registausario()
php有很多代码,它有registausario()
function registratoriusario($usuario、$pass\u hash、$nombre、$email、$activo、$token、$tipo\u usuario){
全球$mysqli;
$stmt=$mysqli->prepare(“插入到usuarios(usuario、密码、名称、更正、激活、令牌、id_tipo))
值(:usuari,:passwor,:nombr,:corre,:activacio,:toke,:id_tip);//bindValue(“:toke”,$token);
$stmt->bindValue(“:id\u tip”,$tipo\u usuario);
如果($stmt->execute()){
return returnaid();
}
}
函数returnaid()
{
全球$mysqli;
$result=$mysqli->prepare(“从DUAL中选择sequencename.CURRVAL”);
$result->execute();
$num=$result->fetchColumn(0);
$stmt->close();
如果($num!=0)
{
警报($num);
返回$num;
}
其他的
{
返回0;
}
}
我在第61行指出了错误(它不影响开发)。
如果有人需要完整的代码,我可以发送它们(但问题在于我在“prepare()”中特别提到的那些函数中根据错误提到了“registausario”。Try catch
最后总是调用
,基本上是在初始化连接后将其置零
RTM:
在PHP5.5及更高版本中,还可以在或之后指定finally块
而不是catch块。finally块中的代码总是
在try和catch块之后执行,无论
在恢复正常执行之前,已引发异常
Try catch
最后总是调用
,本质上是在初始化连接后将其置零
RTM:
在PHP5.5及更高版本中,还可以在或之后指定finally块
而不是catch块。finally块中的代码总是
在try和catch块之后执行,无论
在恢复正常执行之前,已引发异常
谢谢!我看到了很多有答案的帖子,但是没有一个对我有帮助。谢谢!我看到了很多有答案的帖子,但是没有一个对我有帮助。
require 'funcs/conexion.php';
include 'funcs/funcs.php';
function registraUsuario($usuario, $pass_hash, $nombre, $email, $activo, $token, $tipo_usuario){
global $mysqli;
$stmt = $mysqli->prepare("INSERT INTO usuarios (usuario, password, nombre, correo, activacion, token, id_tipo)
VALUES(:usuari, :passwor, :nombr, :corre, :activacio, :toke, :id_tip)"); // <<<<<<< LINE 120
$stmt->bindValue(":usuari",$usuario);
$stmt->bindValue(":passwor",$pass_hash);
$stmt->bindValue(":nombr",$nombre);
$stmt->bindValue(":corre",$email);
$stmt->bindValue(":activacio",$activo);
$stmt->bindValue(":toke",$token);
$stmt->bindValue(":id_tip",$tipo_usuario);
if ($stmt->execute()){
return retornaid();
}
}
function retornaid()
{
global $mysqli;
$result = $mysqli->prepare("SELECT sequencename.CURRVAL FROM DUAL");
$result->execute();
$num = $result->fetchColumn(0);
$stmt->close();
if($num!=0)
{
alert("$num");
return $num;
}
else
{
return 0;
}
}