函数返回一个不起作用的对象

时间:2016-01-20 16:56:13

标签: php database function pdo

我有一些有效的代码:

$user = 'xxx';
$pass = 'xxx';
$db='vive';
$host ='localhost';
$name = 'chris';

function test($user, $pass, $db, $host){
$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
        . $mysqli->connect_error);
}
else{
    echo 'Checkpoint 1.0 <br>';
        return $mysqli;
}
}
$mysqli2 = test($user, $pass, $db, $host);
$sql = "SELECT * FROM `vive_user` WHERE `username` LIKE"."'$name'";
$result = $mysqli2->query($sql);
$num_results = $result->num_rows;
if ($result->num_rows>0)  ...

我能够连接到数据库并每次从数据库中提取我想要的信息。我想稍微清理我的代码(所有细节都没有显示),所以我在代码的最后部分创建了一个新的函数寄存器()。在这个新函数中,我想调用函数test()来返回一个数据库连接对象,然后我可以用它来执行查询:

<?php

$user = 'root';
$pass = 'root';
$db='vive';
$host ='localhost';
$name = 'chris';

function test($user, $pass, $db, $host){
$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}
    else{
        echo 'Checkpoint 1.0 <br>';
            return $mysqli;
    }
}

function register($name){
    echo'test';

    global $user;
    global $pass;
    global $db;
    global $host;

    $mysqli2 = test($user, $pass, $db, $host);
    $sql = "SELECT * FROM `vive_user` WHERE `username` LIKE"."'$name'";
    $result = $mysqli2->query($sql);
    $num_results = $result->num_rows;
    if ($result->num_rows>0)...
}

由于某种原因,函数register()永远不会从数据库中给我任何值。我无法得到任何结果。感谢任何帮助,我已经围绕这个问题跳了几天。请注意,在我的实际代码中,我将这两个函数放在不同的php文件中。

2 个答案:

答案 0 :(得分:0)

为什么用户名在哪里?

不应该是username =?

您使用的引号也是多余的。

$ sql =“SELECT * FROM vive_user WHERE username LIKE”。“'$ name'”;

可能只是

$ sql =“SELECT * FROM vive_user WHERE username ='$ name'”;

答案 1 :(得分:0)

查询中的 LIKE 语句缺少 %...% 包装。

注册更改为:

function register($name){

  global $user;
 global $pass;
 global $db;
 global $host;


  $name = "%".$name."%"; // see here..
    echo'test';
    $mysqli2 = test($user, $pass, $db, $host);
    $sql = "SELECT * FROM `vive_user` WHERE `username` LIKE"."'$name'";
    $result = $mysqli2->query($sql);
    $num_results = $result->num_rows;
    if ($result->num_rows>0)...
}

并确保调用该方法