我有这个PHP代码,它选择一个简单的值:
$name = $mysqli->query('SELECT name FROM users WHERE id = ' . $id . ' LIMIT 1')->fetch_object()->name;
现在,如果结果为0,则会抛出错误。
我希望返回一个默认值,例如"没有名字"如果没有结果。
有什么建议吗?
答案 0 :(得分:6)
不要直接获取名称,而是先查看是否有数据。这样的事情应该有效:
$result = $mysqli->query('SELECT name FROM users WHERE id = ' . $id . ' LIMIT 1')->fetch_object();
$name = (!$result) ? 'No name' : $result->name;
另外,正如@RiggsFolly提到的那样,建议使用预准备语句来减少SQL的可能性:
$stmt = $mysqli->prepare("SELECT name FROM users WHERE id = ? LIMIT 1");
$stmt->bind_param('i',$id);
$stmt->execute();
$result = $stmt->get_result()->fetch_object();
答案 1 :(得分:3)
这可以在纯SQL中完成,这样您就不需要任何额外的PHP代码行了:
$name = $mysqli->query('SELECT IFNULL((SELECT name FROM users WHERE id = ' . $id . ' LIMIT 1), "No Name") name')->fetch_object()->name;
答案 2 :(得分:1)
尝试使用预备声明:
$result = $mysqli->prepare('SELECT name FROM users WHERE id = ? LIMIT 1');
$result->bind_param("i", $id);
$result->execute();
$result->bind_result($col1);
$result->fetch();
$name = (!$col1) ? 'No name' : $col1;
echo $name;
$result->close();