[英]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.