>我有一些代码可以工作:
$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
中选择*";