在MySQL查询返回后,页面不会加载?

时间:2017-08-04 06:14:04

标签: php mysql mysqli

我有一个对我来说没有意义的快速问题。我对MySQL和PHP有点新意,所以我可能会遗漏一些东西。这是我的代码:

$conn = new mysqli('localhost', 'Josh', '**********', '********');
if ($conn->connect_error)
  die('Connection failed: ' . $conn->connect_error);
$result = $conn->query('SELECT count(*) as cnt FROM users WHERE id = 1');
$f = $result->fetch_array();
if ($f->cnt == 0) {
    echo 'doesn\'t exist';
} else if ($f->cnt == 1){
    echo 'does exist';
}

正如您可能知道的那样,这会检查表中是否存在id。如果是,则回显'does exist',否则回声'doesn't exist'。但是,我有一个小问题。每当我将id = 1替换为不存在的id时,它会立即加载并回显'doesn't exist'。但是,当我使用表中存在的id时,页面会加载但仍然会回显'doesn't exist'

任何人都可以帮助我吗?

谢谢你, 约什

2 个答案:

答案 0 :(得分:0)

由于id是一个整数,我们可以用以下方式编写查询:

$result = $conn->query('SELECT id FROM users WHERE id = 1');
if ($result->num_rows == 0) {
    echo 'doesn\'t exist';
} else {
    echo 'does exist';
}

答案 1 :(得分:0)

我修改了它,尝试一下。

$result = $conn->query('SELECT count(id) as cnt FROM users WHERE id = 1'); // or count(*)
$f = $result->fetch_object(); // or use fetch_array(),fetch_assoc() [Search the diff b/w them]
if ($f->cnt == 0) {
    echo 'doesn\'t exist';
} else {
    echo 'does exist';
}

非面向对象的方法

$conn = mysqli_connect('localhost', 'Josh', '**********', '********');

if (mysqli_connect_errno())
  die('Connection failed: ' . mysqli_connect_error);

$result = mysqli_query($conn,'SELECT count(*) as cnt FROM users WHERE id = 1');

$f = mysqli_fetch_array($result); // or mysqli_fetch_assoc($result)
echo $f['cnt'];
if ($f['cnt'] == 0) {
    echo 'doesn\'t exist';
} else if ($f['cnt'] == 1){
    echo 'does exist';
}