我有一些有效的代码:
$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文件中。
答案 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)...
}
并确保调用该方法