【问题标题】:query returns nothing php查询不返回任何内容 php
【发布时间】:2020-02-20 13:11:35
【问题描述】:

我尝试使用函数查询获得一个非常简单的查询的结果,但没有出现任何内容。如果我在 PHPMyAdmin 中使用相同的数据执行查询,我就会得到结果。

这是我的代码:

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

$response = $conn->query($conn, $sql);

$conn 变量是正确的,我用它做了一个插入。

$response 为空。我可以做回声,什么都没有。

我能做些什么来解决这个问题?我可以检查什么?

非常感谢。

【问题讨论】:

  • 您对 SQL 注入持开放态度,应该立即解决
  • 为什么要将连接作为参数传递给查询?它可能应该只是 $sql 变量作为参数。

标签: php sql phpmyadmin


【解决方案1】:

您不需要在查询中传递连接。

解决方案:

$sql = "SELECT * FROM users WHERE email='$email'";
$response = $conn->query($sql);
while($res = $response->fetch_array()){
$name=$res['nameofuser']; //just an example
}
echo $name;

真正的解决方案(准备stmt):

$sql = "SELECT * FROM users WHERE email=?";
$response = $conn->prepare($sql);
$response->bind_param('s',$email);
if(!$response->execute()){
echo "Error query: " . $response->error . ".";
}
$result=$response->get_result();
while($res = $result->fetch_array()){
$name=$res['nameofuser']; //just an example
}
echo $name;

'提示'添加到真正的解决方案检查查询是否完成。

【讨论】:

    【解决方案2】:

    执行查询后。获取结果

       $stmt = $conn->prepare( "SELECT * FROM users WHERE email= ? ");
    
    $stmt->bind_param("s", $email);
    $stmt->execute();
    $result = $stmt->get_result();
    if($result->num_rows === 0) exit('No rows');
    while($row = $result->fetch_assoc()) {
    // your code
    }
    

    【讨论】:

    • 你对 SQL 注入持开放态度
    • 为什么只有可变电子邮件是参数时使用参数'si'?
    • 对不起,这只是一个参数。所以将添加字符串's'
    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 2017-01-23
    • 1970-01-01
    • 2021-04-24
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多