Php 获取SQL语句以选择我希望它执行的项时出现问题

Php 获取SQL语句以选择我希望它执行的项时出现问题,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我正在尝试向组级别为4或5的用户发送电子邮件。我在“用户”表中区分了组级别。我正在尝试获取“组”级别为4或5的用户的电子邮件和“名字”。然后使用该电子邮件和名字创建变量,并将其用于我的电子邮件 我的SQL语句结构是否错误?我没有得到任何错误 我正在努力解决的是这些问题 if($sql_email = "SELECT 'email' FROM 'users' WHERE 'group' = 4 AND 5") { $email = $con->query($sql_email);

我正在尝试向组级别为4或5的用户发送电子邮件。我在“用户”表中区分了组级别。我正在尝试获取“组”级别为4或5的用户的电子邮件和“名字”。然后使用该电子邮件和名字创建变量,并将其用于我的电子邮件

我的SQL语句结构是否错误?我没有得到任何错误

我正在努力解决的是这些问题

if($sql_email = "SELECT 'email' FROM 'users' WHERE 'group' = 4 AND 5") {

    $email = $con->query($sql_email);
} else {
    echo "Query not working right";
}

        $sql_name = "SELECT 'firstname' FROM 'users' WHERE 'group' = 4 AND 5";
            $admin_name = $con->query($sql_name);
更多代码显示我如何使用它

ini_set('display_errors', 1);
error_reporting(E_ALL);

 //User Request Email that goes to the commissioner and creator
            if(isset($_POST['submit'])) {

                $con = mysqli_connect("localhost","root","","db");
                if (mysqli_connect_errno()) {
                    printf("Connect failed: %s\n", mysqli_connect_error());
                        exit();
                }

                if($sql_email = "SELECT 'email' FROM 'users' WHERE 'group' = 4 AND 5") {

                $email = $con->query($sql_email);
                } else {
                    echo "Query not working right";
                }

                $sql_name = "SELECT 'firstname' FROM 'users' WHERE 'group' = 4 AND 5";
                $admin_name = $con->query($sql_name);

                $firstname = $_POST['firstname'];
                $lastname = $_POST['lastname'];
                $username = $_POST['username'];


                $to = $email;
                $subject = 'There is a new user request to join the SFL';
                $message = '
                    <html>
                    <head>
                      <title>New SFL User Request</title>
                    </head>
                    <body>
                        <p>Hi '.$admin_name.',</p><br>
                        <p>Thank you for wanting to join the!</p>

                          <p>Thank you,</p>
                          <p>Administration</p>
                    </body>
                    </html>
                          ';

                $from = "user-requests@example.com";
                $Bcc = "user-requests-confirm@example.com";

                // To send HTML mail, the Content-type header must be set
                $headers  = 'MIME-Version: 1.0' . "\r\n";
                $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

                // Additional headers
                $headers .= 'To: ' .$to. "\r\n";
                $headers .= 'From: ' .$from. "\r\n";
                $headers .= 'Bcc: '.$Bcc. "\r\n";

                // Send the email
                mail($to,$subject,$message,$headers);
                }
我得到了这个错误。。 可捕获的致命错误:在第219行的/home4/db/public_html/example.com/register.php中,类mysqli_result的对象无法转换为字符串

第219行是

<p>Hi '.$admin_name.',</p><br>
Hi.$admin\u name.”,


此外,

if($sql_email = "SELECT 'email' FROM 'users' WHERE 'group' = 4 AND 5")
是无用的,因为结果总是真实的

你可以说

if( ! $con->query($sql_email) )
    echo "Query not working right";
此外,

if($sql_email = "SELECT 'email' FROM 'users' WHERE 'group' = 4 AND 5")
是无用的,因为结果总是真实的

你可以说

if( ! $con->query($sql_email) )
    echo "Query not working right";

执行select查询后,需要获取记录。我假设您需要向找到的所有用户发送电子邮件

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$username = $_POST['username'];

$sql_email = "SELECT `email`, `firstname` FROM `users` WHERE `group` IN (4,5)";
$users = $con->query($sql_email);
if (($users) && ($users->num_rows > 0)){// Got any record?
    // output data of each row
    while($user = $users->fetch_assoc()){
        $to = $user['email'];
        $subject = 'There is a new user request to join the SFL';
        $message = '
            <html>
            <head>
              <title>New SFL User Request</title>
            </head>
            <body>
                <p>Hi '.$user['firstname'].',</p><br>
                <p>Thank you for wanting to join the!</p>

                  <p>Thank you,</p>
                  <p>Administration</p>
            </body>
            </html>
                  ';

        $from = "user-requests@example.com";
        $Bcc = "user-requests-confirm@example.com";

        // To send HTML mail, the Content-type header must be set
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

        // Additional headers
        $headers .= 'To: ' .$to. "\r\n";
        $headers .= 'From: ' .$from. "\r\n";
        $headers .= 'Bcc: '.$Bcc. "\r\n";

        // Send the email
        mail($to,$subject,$message,$headers);
    }
}
else{
    echo "No User Found!";
}
$firstname=$\u POST['firstname'];
$lastname=$\u POST['lastname'];
$username=$_POST['username'];
$sql_email=“从(4,5)中的“用户”中选择“电子邮件”,“名字”;
$users=$con->query($sql\u电子邮件);
如果($users)&&($users->num_rows>0)){//有记录吗?
//每行的输出数据
而($user=$users->fetch_assoc()){
$to=$user['email'];
$subject='有新用户请求加入SFL';
$message='1
新SFL用户请求
您好,“$user['firstname']”,


谢谢你想加入我们

谢谢,

管理

'; $from=“用户-requests@example.com"; $Bcc=“用户请求-confirm@example.com"; //要发送HTML邮件,必须设置内容类型标题 $headers='MIME版本:1.0'。“\r\n”; $headers.=“内容类型:text/html;字符集=iso-8859-1”。“\r\n”; //附加标题 $headers.='To:'.$To.\r\n; $headers.='From:'.$From.\r\n; $headers.=“密件抄送:”.$Bcc.\r\n”; //发送电子邮件 邮件($to、$subject、$message、$headers); } } 否则{ 回显“未找到用户!”; }

您可以从这里了解更多信息:

执行select查询后,您需要获取记录。我假设您需要向找到的所有用户发送电子邮件

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$username = $_POST['username'];

$sql_email = "SELECT `email`, `firstname` FROM `users` WHERE `group` IN (4,5)";
$users = $con->query($sql_email);
if (($users) && ($users->num_rows > 0)){// Got any record?
    // output data of each row
    while($user = $users->fetch_assoc()){
        $to = $user['email'];
        $subject = 'There is a new user request to join the SFL';
        $message = '
            <html>
            <head>
              <title>New SFL User Request</title>
            </head>
            <body>
                <p>Hi '.$user['firstname'].',</p><br>
                <p>Thank you for wanting to join the!</p>

                  <p>Thank you,</p>
                  <p>Administration</p>
            </body>
            </html>
                  ';

        $from = "user-requests@example.com";
        $Bcc = "user-requests-confirm@example.com";

        // To send HTML mail, the Content-type header must be set
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

        // Additional headers
        $headers .= 'To: ' .$to. "\r\n";
        $headers .= 'From: ' .$from. "\r\n";
        $headers .= 'Bcc: '.$Bcc. "\r\n";

        // Send the email
        mail($to,$subject,$message,$headers);
    }
}
else{
    echo "No User Found!";
}
$firstname=$\u POST['firstname'];
$lastname=$\u POST['lastname'];
$username=$_POST['username'];
$sql_email=“从(4,5)中的“用户”中选择“电子邮件”,“名字”;
$users=$con->query($sql\u电子邮件);
如果($users)&&($users->num_rows>0)){//有记录吗?
//每行的输出数据
而($user=$users->fetch_assoc()){
$to=$user['email'];
$subject='有新用户请求加入SFL';
$message='1
新SFL用户请求
您好,“$user['firstname']”,


谢谢你想加入我们

谢谢,

管理

'; $from=“用户-requests@example.com"; $Bcc=“用户请求-confirm@example.com"; //要发送HTML邮件,必须设置内容类型标题 $headers='MIME版本:1.0'。“\r\n”; $headers.=“内容类型:text/html;字符集=iso-8859-1”。“\r\n”; //附加标题 $headers.='To:'.$To.\r\n; $headers.='From:'.$From.\r\n; $headers.=“密件抄送:”.$Bcc.\r\n”; //发送电子邮件 邮件($to、$subject、$message、$headers); } } 否则{ 回显“未找到用户!”; }

您可以从这里了解更多信息:

我更新了我的问题。我把我的代码改成了你所拥有的代码,并且得到一个错误,说我不能将变量转换成字符串。关于你的回答的问题。为什么
选择任何内容
,这不违背获取email和firstname字段的目的吗?我给了你一个技巧来修复你的脚本,而不是它的实际副本。将
任何内容更改为电子邮件、名字。。。我只是想说,在这种情况下,
group=4和5
是不正确的。我更新了我的问题。我把我的代码改成了你所拥有的代码,并且得到一个错误,说我不能将变量转换成字符串。关于你的回答的问题。为什么
选择任何内容
,这不违背获取email和firstname字段的目的吗?我给了你一个技巧来修复你的脚本,而不是它的实际副本。将
任何内容更改为电子邮件、名字。。。我只是想说,在这种情况下,
group=4和5
是不正确的。除了代码之外,如果要查询数据库中的用户输入,请不要使用mysql查询。使用PDO并将变量绑定为参数。虽然mysqli比使用mysql()函数更好,但PDO更安全。PDO到底比mysqli更安全吗?除了代码之外,如果您要查询数据库中的用户输入,请不要使用mysql查询。使用PDO并将变量绑定为参数。虽然mysqli比使用mysql()函数更好,但PDO更安全。PDO到底比mysqli更安全吗?