2013-10-08 30 views
0

工作我想在一個表中插入六個記錄,但在腳本運行時,我得到以下多個插入不使用MySQL

error: 'Fatal error: Cannot pass parameter by reference'.

的具體線路請參見下面的代碼:

$ySQL = "SELECT ID_USUARIO FROM USUARIOS WHERE EMAIL=?"; 
$stmt = $oConni->prepare($ySQL) or die($oConni->error); 
$stmt->bind_param('s', $datos[8]); 
$stmt->execute(); 
$stmt->store_result(); 
$stmt->bind_result($idUsuario); 
$stmt->fetch(); 
$stmt->close(); 

for($i=1;$i<7;$i++){ 
    $vSQL = "INSERT INTO PERMISOS (ID_USUARIO,ID_ACCION,PERMISOS) VALUES(?,?,?)"; 
    $stmt = $oConni->prepare($vSQL) or die($oConni->error); 

    // ERROR. The following line throws it: 
    $stmt->bind_param('iis', $idUsuario, $i, 'S'); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->close(); 
} 
+2

請始終指定在發生錯誤的行。 – ComFreek

+0

@ComFreek錯誤在這裏 - > $ stmt-> bind_param('iis',$ idUsuario,$ i,'S'); 'S'是一個字段類型'ENUM' –

回答

1

這裏是mysqli_stmt::bind_param()簽字:

bool mysqli_stmt::bind_param (string $types , mixed &$var1 [, mixed &$... ])

正如你所看到的,方法接受的所有參數–除第一個–作爲參考。

您至少需要一個變量或函數的返回值纔能有參考。您不能使用字符串文字,比如'S'

這裏是一個修復:

$str = 'S'; 
$stmt->bind_param('iis', $idUsuario, $i, $str);