2013-02-17 3 views
0

У меня есть таблица базы данных - серийный (первичный ключ автоинкремента), версия и turk_number. Я использую следующий код для вставки новой строки. Я получаю эти переменные через $ _GET, и я сделал распечатку, поэтому я знаю, что переменные доступны, поэтому я не уверен, что случилось. Загружаются серийный номер и версия, но не turk_number.php - не загружать переменную в базу данных

$turk_number =''; 
$serial=''; 
$version=''; 
if(isset($_GET['serial'])) 
{ 
    $serial=$_GET['serial']; 
    $_SESSION['serial'] = $serial; 
} 
if(isset($_GET['version'])) 
{ 
    $version = $_GET['version']; 
    $_SESSION['version'] = $version; 
    print "version=" . $version; 
} 
if(isset($_GET['turk_number'])) 
{ 
    $turk_number= $_GET['turk_number']; 
    $_SESSION['turk_number'] = $turk_number; 
    print "turk number=".$turk_number; 
} 

//this assigns a participant a unique serial id at the beginning of the game 
$hostname = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "resolver"; 

try 
{ 
print 'turk2=' . $turk_number; 
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $query2 = "INSERT INTO participants (version, turk_number) VALUES (:version, :turk_number)"; 
     $stmt = $dbh ->prepare($query2); 
     $stmt ->execute(array(':version' => $version, 
          ':turk_number' => $turk_number)); 

} 
catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 
+0

Что * * является неправильным? Вы получаете сообщение об ошибке? –

+0

Нет ошибки, просто получив 0 в столбце turk_number в таблице – user1015214

+0

Что такое 'print 'turk number =". $ Turk_number; 'дает вам тогда? –

ответ

-1

Вы забыли кавычки.

Изменение:

$query2 = "INSERT INTO participants (version, turk_number) VALUES (:version, :turk_number)"; 

к:

$query2 = "INSERT INTO participants (version, turk_number) VALUES (':version', ':turk_number')"; 
+2

Вам не нужны кавычки, вот как работает класс PDO, не так ли? http://www.phpeveryday.com/articles/PDO-Insert-and-Update-Statement-Use-Prepared-Statement-P552.html – user1015214

+0

Да, здесь нет котировок –

+0

Мое подозрение в том, что, поскольку вы не используете ' $ stmt-> bindParam (2, $ turk_number, PDO :: PARAM_STR) '(вы не« говорите », что это строка), и вы назначаете его без кавычек, это переводит в INT. Но это просто догадка, вы можете быть правы, и это что-то еще. – alfasin

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