【问题标题】:How to Query in PHP/ MySQL when there is a period (.) in String当字符串中有句点(。)时如何在PHP / MySQL中查询
【发布时间】:2016-08-16 06:21:44
【问题描述】:

当我使用 PHP 在字符串中有句点 (.) 时如何从 MySQL 数据库中查询。

$variable = "my.email@email.com";
$variable = mysqli_real_escape_string($conn, $variable);
$query = "Select * from table WHERE email = '$variable' ";

当我在 PhpMyAdmin SQl 选项卡中运行它时,这显然有效。但是当我在我的代码中运行它时它不起作用。使用相同代码的其他没有句点的字符串可以正常工作。可能是什么问题

对于那些在这里询问我的原始代码的人

//I get the emails from the url  

    $notit = mysqli_real_escape_string($conn, $_GET['username']);

//I pass my variable in the query

    $sql = "SELECT * ";
    $sql.=" FROM ordrs ";
    $sql.=" WHERE client_email = '$notit' ";
    $query=mysqli_query($conn, $sql) or die("try again");

【问题讨论】:

  • 这不是您使用的实际代码
  • 试试这个 mysql_real_escape_string($variable)。
  • 您使用的是核心 PHP 代码还是任何框架?
  • @e4c5 我已经更新了,就是这样。
  • @claudios 我试过还是不行

标签: php mysql mysqli


【解决方案1】:

试试这个对我有用的代码尝试使用 PDO。

 try{
    $pdo = new PDO("mysql:host={$db_host};dbname={$db_name}", $db_username, $db_password);
    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

        }

        catch(PDOException $exception){
            echo "Connection error: " . $exception->getMessage();
        }

  $email = "code.sample@mail.co.ke";
  $stmt = $pdo->prepare('SELECT email FROM user WHERE email = ?');
  $stmt->bindParam(1, $email);
  $stmt->execute();
  $user = $stmt->fetch(PDO::FETCH_ASSOC);

示例输出,例如:echo '<h2>'. $user['email'] . '</h2>';

【讨论】:

    【解决方案2】:

    您应该使用准备好的语句。否则,可能存在sql注入漏洞。 示例:

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    
    // prepare and bind
    $stmt = $conn->prepare("Select * from table WHERE email = ?");
    $stmt->bind_param("s", $email);
    
    // set parameters and execute
    $email = "john.doe@example.com";
    $stmt->execute();
    

    【讨论】:

    • 一个非常简洁的例子说明为什么手动转义是浪费时间,因为准备好的语句几乎总是更少的代码和更安全的方式。其实可以直接绑定vs$_GET,省去赋值给$email的步骤。
    【解决方案3】:

    我发现问题出在哪里,查询很好,错误来自我没想到的 json_encode。我希望这个问题对将来面临问题的其他人有所帮助。感谢您的帮助

    感谢您的帮助。干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 2011-02-07
      • 2011-03-01
      • 1970-01-01
      • 2021-04-08
      相关资源
      最近更新 更多