繁体   English   中英

Android使用php连接到mysql,字符串查询错误

[英]Android connecting to mysql using php, String query error

我正在写一个使用http post连接到php脚本以连接到mysql数据库的android程序。 查询是要发送的变量。

这是我的代码的一部分:

String query = "select `retailer`.`name` as `retailer`, `product`.`name` as `product`, `product`.price, `promotion`.discount, `promotion`.discount_type";
        query = query.concat(" from `retailer`, `consumer`, `product`, `promotion`, `sell`, `proximity`");
        query = query.concat(" where `consumer`.`email` = '"+consumer_email+"'");
        query = query.concat(" and `proximity`.`retailer_id` = `retailer`.`id`" +
                " and `proximity`.`consumer_id` = `consumer`.`id`" +
                " and `sell`.`retailer_id` = `retailer`.`id`" +
                " and `sell`.`product_id` = `product`.`id`" +
                " and `product`.`promotion_id` = `promotion`.`id`");

请注意,consumer_email是包含我要查询的电子邮件的字符串。 但是我一直与此语法错误。 如果我带走线路consumer email ='“ + consumer_email +”'“”,它可以正确处理。

我想问一下有什么办法解决这个问题吗? 是引起问题的电子邮件周围的单引号吗?

使用这样的准备好的语句。

这将消除您看到的错误。 它也是安全的,可以防止SQL Injection黑客攻击。

而不是直接替换查询中的电子邮件地址,请使用“?”。 然后在运行时将值绑定到它。
http://php.net/manual/zh/pdo.prepared-statements.php

   String query = ......<rest of query>
     query = query.concat(" where `consumer`.`email` = ? );
    ......<rest of query>

    $db = new mysqli('localhost', 'username', 'password', 'database');
    // Create statement object
    $stmt = $db->stmt_init();


// Create a prepared statement
if($stmt->prepare(query )) {
    $stmt->bind_param('s', $email_id);

    // Set your variable    
    $email_id= "example@exp.com";

    // Execute query
    $stmt->execute();
}

暂无
暂无

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

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