繁体   English   中英

字符串中有句点(。)时如何在PHP / MySQL中查询

[英]How to Query in PHP/ MySQL when there is a period (.) in String

使用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");

尝试使用此代码,对我来说尝试使用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>'; echo '<h2>'. $user['email'] . '</h2>';

您应该使用准备好的语句。 否则,可能存在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();

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

谢谢您的帮助。 干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM