php-不将变量加载到数据库中

php-不将变量加载到数据库中,php,Php,我有一个数据库表-serial(autoincrement主键)、version和turk_编号。我正在使用以下代码插入新行。我通过$\u GET接收这些变量,并进行了打印,因此我知道这些变量是可用的,所以我不确定出了什么问题。序列号和版本已加载,但未加载turk_编号 $turk_number =''; $serial=''; $version=''; if(isset($_GET['serial'])) { $serial=$_GET['serial']; $_SESSION

我有一个数据库表-serial(autoincrement主键)、version和turk_编号。我正在使用以下代码插入新行。我通过$\u GET接收这些变量,并进行了打印,因此我知道这些变量是可用的,所以我不确定出了什么问题。序列号和版本已加载,但未加载turk_编号

$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();
}   
你忘了引用

更改:

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


怎么了?您是否收到错误?没有错误,只是在表格的turk_编号列中得到一个0,
print“turk number=”.$turk_编号然后给你?那就是给我正确的土耳其人号码(在我的例子中,它是DDD)!这就是我困惑的原因。你能在PDO呼叫之前把那条线移到右边吗?只是为了确保。你不需要引号,PDO类就是这样工作的,不是吗?是的,这里不需要引号。我的怀疑是,由于您不使用
$stmt->bindParam(2,$turk_number,PDO::PARAM_STR)
(您不会“告诉”语句它是一个字符串),并且您分配它时没有引号,因此它会转换为INT。但这只是一个猜测,你可能是对的,这是另外一回事。但我刚刚试了一个55555的土耳其人,它确实进入了数据库!为什么我的代码错了?你到底是如何使用bindParam的?我会查一下手册。。。但是关于最后一点,我认为PDO中的“prepare”语句本身停止了sql注入。
$query2 = "INSERT INTO participants (version, turk_number) VALUES (':version', ':turk_number')";