【问题标题】:I need help in a query to my db我需要帮助查询我的数据库
【发布时间】:2016-05-29 13:28:23
【问题描述】:

我在查询中遇到问题。需要在我的数据库中插入电子邮件但不重复。输入的电子邮件以逗号或分号分隔。我留下了到目前为止的代码:

$separador = $_POST['separador'];
$listemails= explode($separador, $_POST['emails']);
$count = count($listemails);
for($i=0; $i < $count; $i++){
    $check = $connection -> query("SELECT * FROM emails WHERE email_endereco='$listemails[$i]'") or die($connection -> error);
    if($res = $check -> fetch_array(MYSQLI_ASSOC)){
        ...
    }
    $result = $connection -> query("INSERT INTO emails VALUES(NULL, '".$listemails[$i]."')") or die($connection -> error);
    $lastid = $connection -> insert_id;
    $connection -> query("INSERT INTO emails_lists VALUES(NULL,'$lastid','$l')") or die($connetion -> error);
} 

我想念省略号的地方是什么?

【问题讨论】:

  • 您正在寻找的是“继续;”对于已经在数据库中的电子邮件,它将跳回 for 循环的顶部。
  • 请阅读有关 SQL 注入和参数的信息。这是一种非常糟糕的方法
  • @Milney 这个问题已经解决了:)
  • 你仍然应该认真(尤其是如果代码在真实网站中使用)阅读 SQL 注入和参数

标签: php mysql for-loop mysqli


【解决方案1】:

已经得到 :D ! 我将数据库中的电子邮件字段更改为主键,然后更改代码以使其成为:

for($i=0; $i < $count; $i++){
    $str .= "(NULL,'".$listemails[$i]."')".($i < $count - 1 ? "," : "");
}
$result = $connection -> query("INSERT IGNORE INTO emails VALUES ".$str) or die($connection -> error);

这里我把答案留给我是否可以帮助别人!

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    相关资源
    最近更新 更多