在我的测试机器上查找用户last_name和id的查询工作正常。我无法弄清楚为什么它不适用于我的主机。
对于此表
students(
id VARCHAR(5) NOT NULL,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(40) NOT NULL,
grade SMALLINT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
我运行此查询并没有问题。
$sql="SELECT * FROM $tbl_name WHERE last_name ='$myusername' and id ='$mypassword'";
$result = @mysqli_query ($dbc, $sql);
mysqli_close($dbc);
if(!is_object($result) || $result->num_rows != 1)
{
$errors[] = 'No entries found, maybe capitalize your last name.';
}
else
{
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$_SESSION['username'] = $_POST['username']; //last name
$_SESSION['firstName'] = $row['first_name'] ;
}
但是在主机上,结果中没有行。
但是,我运行了这组代码并显示了所有条目。为什么查询不起作用?
$sql="SELECT * FROM $tbl_name";
$num_results = mysqli_num_rows($result);
for ($i=0; $i<$num_results; $i++)
{
$row = mysqli_fetch_assoc ($result);
print stripslashes($row['last_name'])." ".stripslashes($row['id']);
}
顺便说一下,用户名是姓氏,密码是他们的ID。我不熟悉PHP和MySql,但这在逻辑上对我没有意义。
答案 0 :(得分:1)
应该使用mysqli_query。
请务必使用连接结果(mysqli_connect)更改$link
。
<强>代码:强>
$sql = "SELECT * FROM $tbl_name";
$result = mysqli_query($link, $sql);
$num_results = mysqli_num_rows($result);
$i = 0;
while ($row = mysqli_fetch_assoc ($result)) {
print stripslashes($row['last_name'])." ".stripslashes($row['id']);
$i++;
}
答案 1 :(得分:0)
我不确定,但我认为您使用了错误的语言来处理mysql主机,例如循环不应该是SQL语言。据我所知,这看起来像C或C ++(它可能取决于你目前使用的是什么类型的数据库)。
但您需要知道的是,使用此查询,您需要知道确切的名称和确切的密码。为了以防万一,请这样做。
SQL语言中的查询应该按照以下方式编写:
SELECT * FROM students WHERE last_name = "ifyouknowit" OR password="ifyouknowit";
您确定至少会有一个结果,当您调用&#34;时,它会显示整个相关行。 *&#34;。所以你并不需要一个参数,因为密码应该是每个人都独一无二的。(理论上)。
在另一种情况下,尝试添加一个列并将其命名为USERID或类似的东西,以设置唯一的引用号码。所以你一定不要在两个名字和名字很容易混淆的人之间混淆。
另外,请务必正确使用关于名称的写法语法(如大写字母在某种程度上很重要)。
我还注意到您在此表中没有任何密码列。它存放在哪里?无论如何,通过此查询,您仍然会有结果。
"students(
id VARCHAR(5) NOT NULL,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(40) NOT NULL,
grade SMALLINT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);"
您应该从存储的位置调用密码数据库。提供关于其他表的更多信息,然后我将为您编写完整的查询。
答案 2 :(得分:0)
此代码正在清除变量值,因此查询中没有搜索任何内容。我认为这是应该使用的标准代码,显然不是。
//prohibit sql injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);