我正在尝试从php的另一个视图创建一个视图,我没有得到任何错误,但它很简单,不会创建一个视图。我可以在mysql控制台中手动创建另一个视图,但不能从php创建视图。知道我哪里错了吗?
function createTransaction_file($db,$file_id){
$sql = "CREATE VIEW transaction_file AS SELECT context,transaction_type,starttime,stoptime,stoptime - starttime AS runtime,correlator,parent_correlator,iteration FROM transactions WHERE file_id =" . $file_id . " ORDER BY starttime" ;
//echo $sql;
if($stmt = $db->prepare($sql)){
/* execute query */
$stmt->execute();
}else{
echo "File id is ". $file_id;
echo "Error code ({$db->errno}): {$db->error}";
die("Could not create transaction_iter view");
}
/* close statement */
$stmt->close();
}
function createTransaction_iter($db,$iteration){
$sql = "CREATE VIEW transaction_iter AS SELECT context,transaction_type,starttime,stoptime,stoptime - starttime AS runtime,correlator,parent_correlator,iteration FROM transaction_file WHERE iteration = ".$iteration." LIMIT 500;" ;
//echo $sql;
if($stmt = $db->prepare($sql)){
/* execute query */
$stmt->execute();
}else{
echo "File id is ". $file_id;
echo "Error code ({$db->errno}): {$db->error}";
die("Could not create transaction_iter view");
}
/* close statement */
$stmt->close();
}
createTransaction_file($db,$file_id);
createTransaction_iter($db,$iteration);
答案 0 :(得分:1)
我认为你根本没有得到错误的细节。再说一遍,if / else块不是你想要做的我相信。尝试这样的事情:
$stmt = $db->prepare($sql);
if (! $stmt->execute()) {
$arr = $stmt->errorInfo();
print_r($arr);
}
更新:正如预期的那样,错误消息表明您的用户缺少必要的权限。我猜你的观点是用不同的权利创造的。这是一个类似的SO帖子:mysql forgets who is logged in: command denied to user ''@'%',讨论如何深入了解这些视图/表格的权利。