Web设计PHP SQL查询问题
这是我的function.php文件中的一个函数。现在我只是想让它输出1或0,这取决于用户名是否在MYSQL数据库中Web设计PHP SQL查询问题,php,mysql,sql,database,Php,Mysql,Sql,Database,这是我的function.php文件中的一个函数。现在我只是想让它输出1或0,这取决于用户名是否在MYSQL数据库中 function retrieve_single($col, $table, $item, $con) { require_once('include/global.php'); $sql = "SELECT * FROM users WHERE username = Username1"; $conn = new mysqli($DBServer, $DBUser
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT * FROM users WHERE username = Username1";
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($conn->connect_error) {
trigger_error('Database connection failed: '.$conn->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
我一直在不断地改变东西,试图找出它到底出了什么问题,我所知道的只是我不断遇到的一个sql错误。到目前为止,我已经写了它,没有变量,因为我试图解决这个问题
global.php文件:
$DBServer = 'localhost'; $DBUser = 'root'; $DBPass = ''; $DBName = 'social';
有人能帮我吗!我知道问题很简单,因为这是我第一次遇到这个问题您所说的错误(您没有向我们展示)是由以下原因造成的:
WHERE username = Username1 ";
^ ^ // missing quotes
它需要在Username1
即:
如果您还没有这样做,请将错误报告添加到文件的顶部,这将在生产测试期间有所帮助
error_reporting(E_ALL);
ini_set('display_errors', 1);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
您所说的错误(您没有向我们展示)是由以下原因造成的:
WHERE username = Username1 ";
^ ^ // missing quotes
它需要在Username1
即:
如果您还没有这样做,请将错误报告添加到文件的顶部,这将在生产测试期间有所帮助
error_reporting(E_ALL);
ini_set('display_errors', 1);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
你的功能很混乱。在代码的其余部分如何调用它
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT * FROM users WHERE username = Username1";
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($conn->connect_error) {
trigger_error('Database connection failed: '.$conn->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
因此,您的retrieve_single()
界面具有以下$col
、$table
、$item
和$con
。但是它们在函数中的使用位置是什么?它们似乎100%没有被使用。所以你只是像retrieve\u single()
那样调用它,希望它能工作?看起来很奇怪
那么在您的函数中,您的查询是:
$sql = "SELECT * FROM users WHERE username = Username1";
这没什么意义。它周围至少应该有单引号,如下所示:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
但它似乎应该是这样一个变量:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
但也就是说,$Username1
从何而来?也许可以像下面这样查看应该是$item
的接口变量:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
也许整个函数需要重构,以适应我注意到的所有奇怪之处,如:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
使用此重构函数,您可以在函数外部像这样访问它:
$con = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
retrieve_single('*', 'users', 'Username1', $con);
再说一次,我不知道你是如何在更大的代码中使用你的函数的,所以我只是根据你所介绍的来做一些补充。就目前情况而言,您所介绍的函数本身是有问题的。您的函数非常混乱。在代码的其余部分如何调用它
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT * FROM users WHERE username = Username1";
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($conn->connect_error) {
trigger_error('Database connection failed: '.$conn->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
因此,您的retrieve_single()
界面具有以下$col
、$table
、$item
和$con
。但是它们在函数中的使用位置是什么?它们似乎100%没有被使用。所以你只是像retrieve\u single()
那样调用它,希望它能工作?看起来很奇怪
那么在您的函数中,您的查询是:
$sql = "SELECT * FROM users WHERE username = Username1";
这没什么意义。它周围至少应该有单引号,如下所示:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
但它似乎应该是这样一个变量:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
但也就是说,$Username1
从何而来?也许可以像下面这样查看应该是$item
的接口变量:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
也许整个函数需要重构,以适应我注意到的所有奇怪之处,如:
$sql = "SELECT * FROM users WHERE username = 'Username1'";
$sql = "SELECT * FROM users WHERE username = '$Username1'";
$sql = "SELECT * FROM users WHERE username = '$item'";
function retrieve_single($col, $table, $item, $con) {
require_once('include/global.php');
$sql = "SELECT $col FROM $table WHERE username = '$item'";
if ($con->connect_error) {
trigger_error('Database connection failed: '.$con->connect_error, E_USER_ERROR );
}
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $con->error, E_USER_ERROR);
} else {
$rows_returned = $rs->num_rows;
echo $rows_returned;
}
}
使用此重构函数,您可以在函数外部像这样访问它:
$con = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
retrieve_single('*', 'users', 'Username1', $con);
再说一次,我不知道你是如何在更大的代码中使用你的函数的,所以我只是根据你所介绍的来做一些补充。就目前情况而言,您所介绍的函数本身就是有问题的。询问OP lol@JakeGould我几乎100%确定用户名不是
int
。用户名通常是文本。如果OP回来说“这不起作用”,那么我们肯定会知道;-)你的回答也很有道理,杰克。如果OP选择了你的,太好了。我们已经找到了问题的根源@Jakegould谢谢我没有注意到丢失的报价。这造成了很大的不同。Username1是数据库中的测试用户名。对不起,我应该说得更清楚一点问OP lol@JakeGould我几乎100%确定用户名不是int
。用户名通常是文本。如果OP回来说“这不起作用”,那么我们肯定会知道;-)你的回答也很有道理,杰克。如果OP选择了你的,太好了。我们已经找到了问题的根源@Jakegould谢谢我没有注意到丢失的报价。这造成了很大的不同。Username1是数据库中的测试用户名。对不起,我应该说得更清楚一点,我知道我是先回答的,不过杰克,你的回答更适合可能出现的情况。我做了你的+1。@Fred ii-I+1
也做了你的。但正如我详细说明的,这里有很多问题。从单引号到界面,再到几乎所有关于这个看似简单的函数的结构的东西。谢谢你,杰克。我确实考虑过可能丢失的$
和一个可能的变量,在你发布你的之前,然后注意到你已经在你的文章中涵盖了这一点,因此,我现在没有必要记下它,如果,那么。。。你掩盖了它,可能会假装我复制了你的干杯我知道我先给出了答案,但是杰克,你的答案更适合可能出现的情况。我做了你的+1。@Fred ii-I+1
也做了你的。但正如我详细说明的,这里有很多问题。从单引号到界面,再到几乎所有关于这个看似简单的函数的结构的东西。谢谢你,杰克。我确实考虑过可能丢失的$
和一个可能的变量,在你发布你的之前,然后注意到你已经在你的文章中涵盖了这一点,因此,我现在没有必要记下它,如果,那么。。。你掩盖了它,可能会假装我复制了你的cheersVery模糊的标题,你还没有告诉我们错误<代码>未知列用户名1有没有可能?标题很模糊,您还没有告诉我们