2015-03-09 4 views
-1

Я очень новичок в MySQl, и я пытаюсь проверить, соответствует ли введенное письмо любому из моего стола. Если он совпадает, мне нужно поместить в другую таблицу адрес электронной почты и другие столбцы той же строки.Проверьте, существует ли значение в таблице 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); 
} 
?> 

Любая помощь была бы высоко оценена!

+2

Используйте либо 'num_rows()' или 'COUNT()'. Плюс это даст вам проблемы 'grad year'. Материя, факт, 75% этой строки '(имя, 'электронная почта', школа, год града)' даст вам проблемы. –

+0

Я не уверен, что вы точно спрашиваете. Почему бы не вытащить всю информацию из таблицы 1 (предполагая, что все там). если ответ равен нулю, нет вставки – DCR

+1

На самом деле, я не вижу, как этот код, возможно, даже работает. 'WHERE email = $ email' - это другой код. –

ответ

1

Не использовать использовать функции 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 и модифицированного)

+0

Отличный ответ. Теперь, как насчет кода OP о том, почему он не работает в первую очередь? * Ах, * это «вопрос». Но это 'INSERT INTO table2 SELECT * FROM table1 WHERE email =?' Было в руководстве? Я сомневаюсь в этом. Это не удастся. –

+0

Слишком много трудностей с исходным кодом, чтобы попытаться обратиться к каждому из них. Легче начинать с нуля (тем более, что OP использовал устаревшие функции mysql * и без подготовленных операторов). И, нет, 'INSERT ... SELECT ...' не было на странице руководства, на которую я ссылался, - после того, как вы попросили меня зайти в Google и нашли ссылку здесь: http://dev.mysql.com/doc/refman/ 5.1/en/insert-select.html –

+0

Я, во-первых, не знаю, что такое схема db OP и содержит слишком много ошибок в их коде, чтобы быть абсолютно уверенными. Посмотрим, что они скажут. Это вполне может быть то, что они ищут. Тем не менее, я сам люблю объяснять OP, почему их настоящий код не работает. Неопределенные значения и пробелы и т. Д. –

Смежные вопросы