PHP-无法从数据库检索数据

PHP-无法从数据库检索数据,php,mysql,Php,Mysql,由于某些原因,在PHP中运行查询时不会返回结果。我在MySQL命令行中尝试了这两种查询,它们在那里工作得非常好。下面是代码(为了澄清,mysql_connect.php工作得非常好) 当我运行脚本时,我得到一条消息“cannotgetid”,但该查询在MySQL命令行和PHPMyAdmin中工作。 mysqli_query($dbc,"SELECT user_id FROM users WHERE email=$email"); 这与 mysqli_query($dbc,"SELECT u

由于某些原因,在PHP中运行查询时不会返回结果。我在MySQL命令行中尝试了这两种查询,它们在那里工作得非常好。下面是代码(为了澄清,mysql_connect.php工作得非常好)


当我运行脚本时,我得到一条消息“cannotgetid”,但该查询在MySQL命令行和PHPMyAdmin中工作。

mysqli_query($dbc,"SELECT user_id FROM users WHERE email=$email");
这与

mysqli_query($dbc,"SELECT user_id FROM users WHERE email=example@example.com");
但应该是这样

mysqli_query($dbc,"SELECT user_id FROM users WHERE email='example@example.com'");
所以你必须这么做

mysqli_query($dbc,"SELECT user_id FROM users WHERE email='$email'");
或者更好

mysqli_query($dbc, 'SELECT user_id FROM users WHERE email=\'' . $email . '\'');
在这个小错误旁边
您应该知道是否有人更改了cookie的值。

您的查询无效,在将其放入查询之前,您应该使用以下内容重写它,并确保您有
$email
值的
mysqli\u real\u escape\u字符串

SELECT user_id FROM users WHERE email='$email'
更好的方法是使用以下命令重写查询:

以下是如何获取$id值:

$stmt = mysqli_prepare($dbc, "SELECT user_id FROM users WHERE email = ?");
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id);
mysqli_stmt_fetch($stmt);

您的代码无法工作有两个原因-
$id
不会神奇地变成整数,而是一个mysqli结果。电子邮件是一个字符串,所以它应该被引用

但是

为什么会这样

如果您想为用户获取所有数据,对于某些电子邮件,只需进行第二次查询“通过电子邮件获取数据”,并删除第一次:

SELECT * FROM users WHERE email='$email';

别忘了转义你的输入,因为它在cookie中。或者,按照建议使用准备好的语句。

cookie是否确实存在?只是为了澄清:您确定mysql\u connect.php工作正常吗?您是否在其他文件中使用mysql\u connect或mysqli\u connect?毕竟,您现在使用的是mysql\u fetch\u数组,而不是mysqli\u fetch\u数组。所以你以前可能会搞砸。是的,cookie在那里。如果你有phpmyadmin,那么把查询放在那里。如果你得到一个结果,那么你没有问题。如果它没有返回结果,则表明您的选择有问题。您还可以创建一个echo$id。这样您就可以看到查询的样子。只使用MySQLi调用。MySQL已弃用,将来将被删除。混合使用这两个库可能会给您带来麻烦。当我这样做时,会出现错误“Catchable fatal error:类mysqli_result的对象无法转换为字符串”,这是因为您在第二次查询中使用了
$id
。但是在这里,您应该做一些类似于
$result
-
mysql\u fetch…
的事情。同样值得尝试的是:使用面向对象的表示法。它倾向于使这类代码更具可读性。
SELECT * FROM users WHERE email='$email';