检查 MySQL 表中是否存在值


Check if value exists in MySQL table

我对MySQl很陌生,我正在尝试检查输入的电子邮件是否与我表格中的任何电子邮件匹配。如果匹配,我需要将电子邮件和同一行的其他列放在另一个表中。

我现在得到的是添加到表2中的空白行。

<?php
include "config.php";
$email = $_POST['email'];
$match = mysqli_query("SELECT email FROM table1 WHERE email = $email"); 
if($conn->query($match)){
    //here i have to find the name, school, and grad_year that matches
    // with the email from table 1 which is in the same row. I tried a couple of 
    //things but it didn't work. So i don't know what to put in there.
    $insert = "INSERT INTO table2 VALUES(name,'$email',school,grad year )";
    $conn->query($insert);
}
?>

任何帮助将不胜感激!

永远不要使用 mysql* 函数。它们已弃用且不安全。请改用 mysqli* 或 PDO。请参阅下面的示例代码(我没有运行它,可能会有错误 - 这个想法是让你走上正确的道路......

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s'n", mysqli_connect_error());
    exit();
}
$email = $_POST['email'];
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT * FROM table1 WHERE email=?")) {
    /* bind parameters for markers */
    $stmt->bind_param("s", $email);
    /* execute query */
    $stmt->execute();
    /* bind result variables */
    # NOTE: You may prefer $stmt->get_results() and $result->fetch_assoc()
    # to this $stmt->bind_result() and $stmt->fetch().
    $stmt->bind_result($name, $junk, $school, $grad_year);
    /* fetch value */
    if ($stmt->fetch()) {
        $stmt2 = $mysqli->prepare("INSERT INTO table2 VALUES (?,?,?,?)");
        $stmt2->bind_param("ssss", $name, $email, $school, $grad_year);
        $stmt2->execute();
        $stmt2->close();
    }
    /* close statement */
    $stmt->close();
}
/* close connection */
$mysqli->close();
?>

或者,如果您不关心在此过程中了解详细信息,这会更快、更简单:

// yada,yada - get a conx
$email = $_POST['email'];
/* create a prepared statement */
if ($stmt = $mysqli->prepare("INSERT INTO table2 SELECT * FROM table1 WHERE email=?")) {
    /* bind parameters for markers */
    $stmt->bind_param("s", $email);
    /* execute query */
    $stmt->execute();
    /* the total number of affected rows can be determined by using the mysqli_stmt_affected_rows() function */
}

(来源:从 http://php.net/manual/en/mysqli.prepare.php 复制和修改的示例)