PHP mysqli查询检查是否存在行

时间:2011-03-11 15:57:14

标签: php mysqli

我有一个mysql表,我想检查是否存在columnA = $ a和$ columnB = $ b的行。我不需要从那里选择任何东西。什么应该是有效的查询?目前我正在做,

if ($stmt = mysqli->prepare("SELECT * FROM TABLE WHERE columnA=? && columnB= ? LIMIT 1")) {
    $stmt->bind_param("ss", $a, $b);
    $stmt->execute();
    $stmt->store_result();
    $count=$stmt->num_rows;
    $stmt->close();
    }
    return ($count > 0 ? true : false);

3 个答案:

答案 0 :(得分:7)

试试这个:

if ($stmt = $mysqli->prepare("SELECT COUNT(*) FROM TABLE WHERE columnA=? && columnB=?")) {
    $stmt->bind_param("ss", $a, $b);
    $stmt->execute();
    $stmt->bind_result($count);
    $stmt->fetch();
    $stmt->close();
}

return ($count > 0 ? true : false);

现在你应该能够完成它

答案 1 :(得分:3)

如果您想要改进该查询,那么这是一种有效的查询,您应该只选择一列来加速查询。

if ($stmt = mysqli->prepare("SELECT id FROM TABLE WHERE columnA=? && columnB= ? LIMIT 1")) {

答案 2 :(得分:2)

只从行中选择一个字段而不是所有字段(*)。即使您没有使用它们,mysql仍然必须从存储中获取它们并准备好传输它们。

SELECT columnA FROM table WHERE ...

否则除了在columnA和columnB上放置索引以使搜索更快之外,你无法做其他事情来改进。