【发布时间】:2017-06-28 20:14:32
【问题描述】:
我希望下面的 PDO 选择与底部的两个 IF 语句一起使用吗?
第一个 IF 我只是想确保没有错误。
第二个 IF 我想检查它返回了多少行。我知道这个number of rows == 0 不会起作用。
有没有办法做到这一点?
try {
$conn = new PDO('mysql:host=localhost;dbname=zs', 'zs', 'rlkj08sfSsdf');
$conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo $e->getMessage();
die();
}
$stmt = $conn->prepare("SELECT * FROM zip WHERE zip_code =:zip1");
$stmt->bindValue(':zip1', $_POST[zipcode], PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if($rows = "") {
echo "<p><strong>There was a database error attempting to retrieve your ZIP Code.</strong></p>\n";
}
if(number of rows == 0) {
echo "<p><strong>No database match for provided ZIP Code.</strong> Please enter a new ZIP Code.</p>\n";
}
【问题讨论】:
-
if($rows = "") {这是一个分配,而不是比较。 -
fetchAll()返回一个数组。您可以使用empty()或count()来测试其中是否有任何内容。 -
不要考虑邮政编码
ints,你会遇到前导零的问题。 stackoverflow.com/questions/893454/… -
你永远不应该在没有适当过滤的情况下在 SELECT 中使用 $_POST 变量——这是在调用 SQL 注入!
-
@Zac67 他正在使用准备好的语句。你的评论是绝对错误的。