2013-02-13 424 views
3

我得到这个错误 SQLSTATE [21000]:基数违规:1241操作数应该包含1列 有人可以帮助我明白为什么?获取错误 - SQLSTATE [21000]:基数违规:1241操作数应该包含1列

这里是我的代码:

<?php 


session_start(); 
$turk_number =''; 
$serial=''; 
$version=''; 
if(isset($_POST['turk_number'])) 
{ 
    $_SESSION['turk_number'] = $_POST['turk_number']; 
    $turk_number= $_POST['turk_number']; 
} 

$hostname = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "resolver"; 

try 
{ 
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 

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

    $query1 = "SELECT ((SELECT * FROM participants ORDER BY serial DESC LIMIT 0, 1) % 10) + 1 as version"; 
    //$results = $dbh->query($query1); 
     $results = $dbh->prepare($query1); 
     $results->execute(); 
     $serial = $results->fetchColumn(0); 
    if($test= $results->fetchColumn(1))  
    { 
     $version = $test; //last version on record + 1 
    } 
    else //if no user ever played any games 
    { 
     $version = 1; 
    } 
    $query2 = "INSERT INTO participants (version) VALUES (:version, :turk_number)"; 
     $stmt = $dbh ->prepare($query2); 
     $stmt ->execute(array(':version' => $version, 
          ':turk_number' => $turk_number)); 

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

$_SESSION['serial']= $serial; 
$_SESSION['version']=$version; 


?> 
serial <?php print $serial; ?><br /> 
version <?php print $version; ?><br /> 
turk <?php print $turk_number; ?> 
+0

试图国防部它,我也越来越相同的错误,基数违规:1241操作数。但我的代码与你不同。我怎样才能应用数组中的值,$ productId = array(19,20); - >错误。单个值正常工作 - > $ productId = 19; – Rathinam 2018-02-08 11:14:16

回答

7

您选择在内部查询中的所有列,然后尝试做%10,因为你不能%10的多个列给你的错误。将它切换为选择一列。

(SELECT * FROM participants ORDER BY serial DESC LIMIT 0, 1) % 10 

选择多列,然后通过

+0

谢谢,这工作! – user1015214 2013-02-14 02:08:31

相关问题