Ошибка регистрации: Предупреждение: odbc_num_rows () ожидает, что параметр 1 будет ресурсом, логическое значение дано в

Я новичок в php, я не могу заставить существующую учетную запись ckeck работать во время регистрации. Это работало очень хорошо с mssql. Но уже в php 5.9 у меня это не работает. И я должен перейти на OBDC.

Оригинальный код был в mssql

 <?php
$infomsg = "";

if(isset($_POST['register']))
{
$date = date('h:i:s a', time());
$sql_server = "";
$sql_db = "";
$sql_user = "";
$sql_pass = "";                       /// Database Name
$objConnect = odbc_connect("DRIVER={SQL Server};SERVER=".$sql_server.";DATABASE=".$sql_db.";UID=".$sql_user.";PWD=".$sql_pass.";",$sql_user,$sql_pass);
$objConnect1 = odbc_connect("DRIVER={SQL Server};SERVER=".$sql_server.";DATABASE=".$sql_db.";UID=".$sql_user.";PWD=".$sql_pass.";",$sql_user,$sql_pass);//check query row
function checkrow($query1)
{
if(odbc_num_rows($query1) << 0){
echo "Username you have entered is already in use!";
}
else
{
while(odbc_fetch_row($query1)){
$register = odbc_result($query1,"fdUserNum");
}
}
}

//security
function chckifltr($value)//a-z A-Z 0-9 character possible
{
if(preg_match('/^[a-z0-9A-Z]+$/i', $value))
{
return true;
}
else
{
return false;
}
}
$username = $_POST['reg_user'];
$pass1    = $_POST['reg_pass'];
$pass2    = $_POST['reg_conf_pass'];
$email    = $_POST['reg_email'];
$ppass    = $_POST['reg_ppass'];
if(strlen($username) > 20){
$infomsg = "<p class=\"bg-danger\">UserID max 20 characters</p>";
}else{
if(strlen($email) > 50){
$infomsg = "<p class=\"bg-danger\">Email max 50 characters</p>";
}else{
if(strlen($ppass) > 20){
$infomsg = "<p class=\"bg-danger\">Second Password max 20 characters</p>";
}else{
if(strlen($pass1) > 20){
$infomsg = "<p class=\"bg-danger\">Password max 20 characters</p>";
}else{
if($username != "" && $pass1 != "" && $pass2 != "")
{
if(chckifltr($username) && chckifltr($pass1) && chckifltr($pass2))
{
if($pass1 == $pass2)
{
if(checkrow(odbc_exec($objConnect, "SELECT * FROM UserInfoFromPublisher WHERE fdUserID = '".$username."'") == false))
{
if(checkrow(odbc_exec($objConnect, "SELECT * FROM UserInfoFromPublisher WHERE fdEmail = '".$email."'") == false))
{
$pass3 = md5($pass1);
odbc_exec($objConnect, "INSERT INTO UserInfoFromPublisher (fdUserID,fdPassword,fdCash,fdemail,fd2Password) VALUES ('".$username."','".$pass3."',250000,'".$email."','".$ppass."')");
$infomsg = "<font color='green'>The account has been successfully made!</p>";
}
else
{
$infomsg = "<font color='red'>Email you have entered is already in use!</p>";
}
}
else
{
$infomsg = "<font color='red'>Username you have entered is already in use!</p>";
}
}
else
{
$infomsg = "<font color='red'>Passwords don't match!</p>";
}
}
else
{
$infomsg = "<font color='red'>Please enter only letters and numbers!</p>";
}
}
else
{
$infomsg = "<p class=\"bg-danger\">Please fill in all of the fields!</p>";
}
}
}
}

}
}
?>

Предупреждение: odbc_num_rows () ожидает, что параметр 1 будет ресурсом, логическое значение указано в строке 66

Предупреждение: odbc_fetch_row () ожидает, что параметр 1 будет ресурсом, логическое значение указано в строке 71

0

Решение

Ок, было нелегко, но нашел это!

Возьми эту строку:

if(checkrow(odbc_exec($objConnect, "SELECT * FROM UserInfoFromPublisher WHERE fdUserID = '".$username."'") == false)){
//Let's break it down.
$query_str = "SELECT * FROM UserInfoFromPublisher WHERE fdUserID = '".$username."'";
$query_result = odbc_exec($objConnect, $query_str);
if(checkrow($query_result == false)){

Вы передаете результат условия для проверки. Вы получаете логическое из-за этого. Я думаю, вы просто вставили слишком много скобок.

if(checkrow(odbc_exec($objConnect, "SELECT * FROM UserInfoFromPublisher WHERE fdUserID = '".$username."'")) == false){
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector