我有一个在数据库上运行查询时使用的通用脚本,它包含错误检查等。希望这是一个足够可读的脚本。
// Set some variables if necessary
$var = "example";
// Write sql statement with ? as placeholders for any values
$sql = "sqlstatementhere";
// Prepare the SQL statement using the database connection parameter
if($stmt = $dbconEDB->prepare($sql))
{
// Bind any necessary variables
if($stmt->bind_param('s', $var))
{
$result = $stmt->execute();
// If the statement ran successfully
if($result)
{
$result = $stmt->get_result();
if($result->num_rows >= 1)
{
while($row = $result->fetch_assoc())
{
// If there are result get them here
// $var = $row['fieldname'];
}
}
else // the statement returned 0 results
{
// Deal with the nothingness
}
}
else // the sql didnt execute
{
// Somethings gone wrong here
}
}
else // the binding was wrong
{
// Check your bindings
}
}
else // There was an error preparing the sql statement (its wrong)
{
// the sql is wrong
}
我想用PDO制作同样的东西,但是,制作一个类会更有益吗?
答案 0 :(得分:1)
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO:: PDO::FETCH_ASSOC);
$stmt = $pdo->prepare($sql);
$stmt->execute([$var]);
$rowset = $stmt->fetchAll();
如果启用了例外,则可以简化代码并在每个函数后跳过检查错误。如果发生错误,您就会知道它!你可能想要捕捉异常。
不需要bind_param()废话。只需将一组参数值传递给execute()。
不要担心检查是否有任何行。如果没有结果,fetchAll()
将返回一个空数组。除非你有一个不太适合内存的巨大结果集,否则只需使用fetchAll()
。
我不知道为什么有人会使用mysqli。 PDO更容易。