2013-02-13 420 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

相關問題