返回对象的函数中的函数不起作用


function within a function returning an object not working

>我有一些代码可以工作:

$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)  ...

能够连接到数据库,每次都从数据库中提取我想要的信息。我想稍微清理一下我的代码(所有细节都没有显示),所以我用代码的最后一部分制作了一个新函数 register()。在这个新函数中,我想调用函数 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() 永远不会从数据库中给我任何值。我无法为$result得到任何东西。任何帮助都值得赞赏,我已经围绕这个问题跳舞了几天了。请注意,在我的实际代码中,我在不同的 php 文件中具有这两个函数。

查询中的 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)...
}

并确保该方法被调用

为什么用户名喜欢?

不应该是用户名 = 的地方吗?

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

$sql ="从username喜欢的地方vive_user中选择*"。$name'";

可能只是

$sql ="从username='$name'的vive_user中选择*";