2013-03-06 3 views
0

Все в этой программе работает, кроме тех случаев, когда я пытаюсь вставить переменную в мою базу данных. Вместо переноса переменных ($ q, $ w, $ e) в базу данных процесс завершается с ошибкой. Обратите внимание, что если я изменю переменные на целые числа или строки, процесс завершится успешно. Не могли бы вы мне помочь? THXвызов переменных php не работает

<html> 
    <body> 
    <?php 
    $q = $_POST['q']; 
    $w = $_POST['w']; 
    $e = $_POST['e']; 
    // bring variables from browser works 
    $con=mysql_connect("mysql5.000webhost.com","*****","*****","*****"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 
    // connection to server works 

    $query = mysql_query('INSERT INTO `a5637490_test`.`test` (`1`, `2`, `3`, `4`) VALUES ($q, 14, $w, $e)'); 
    mysql_close($con); 

    echo 'success'; 

    ?> 
    </body> 
    </html> 

ответ

0

Ваши строковые переменные не экранированы надлежащим образом. Вам нужно цитировать их, как

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ('$q', 14, '$w', '$e')"); 
1

Попробуйте вместо этого:

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ('$q', 14, '$w', '$e')"); 

Обратите внимание, что:mysql_ расширения являются устаревшими, и ваш код таким образом, является уязвимым для SQL injection, используйте PDO или подготовленные заявления вместо ,

+1

Я думаю, что есть небольшая опечатка здесь, кавычки вокруг вставки заявления в вышеописанном случае будут double or or a parse error –

+0

Это даст вам синтаксическую ошибку –

+0

@HankyPanky ㇱ - Извините, я скопировал ее из вопроса OP. Обновлено сейчас, спасибо. –

0
$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ($q, 14, $w, $e)"); 

Вы должны использовать двойные кавычки. Одиночные кавычки не допускают вставки переменных непосредственно в строку.

0

попробовать это:

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ('".$q."', 14, '".$w."', '".$e."')"); mysql_close($con); 
0

Вы должны использовать двойных кавычек

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ($q, 14, $w, $e)"); 
Смежные вопросы