首页 > 解决方案 > 如何检查 MySQL/PHP 中的一列上是否存在具有特定值的行?

问题描述

我正在编写一个程序,该程序必须检查表中是否存在具有唯一“id”值的行,如果存在则从中获取数据,如果不存在则创建该行。

我对 MySQL 语法比较陌生,到目前为止它给我带来了麻烦。

我试图做的是:

连接数据库;

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}          

我尝试检查是否存在具有某一列的特定唯一值的行

	$sql = "SELECT EXISTS(SELECT * FROM employee WHERE id=300)";
	$result = mysqli_query($conn, $sql) or die("error to check the existence of the row");
	if ($result = 1){echo "A row with current date does exist";}
	else {echo "A row with current date does not exist";}

此检查的问题在于,表中是否存在这样的“42”值或任何其他值,就此而言,它似乎总是返回“1”。

显然,这是行不通的。但是应该怎么做呢?
对不起,如果这个问题很愚蠢。

标签: phpmysql

解决方案


您需要从查询结果中获取行。

$row = mysqli_fetch_row($result);
if ($row[0]) {
    echo "A row with current date does exist";
} else {
    echo "A row with current date does not exist";
}

顺便说一句,您检查的是 ID,而不是日期,因此消息似乎与查询不匹配。

您的代码中也有错字

if ($result = 1)

正在分配变量,而不是对其进行测试;比较使用==.


推荐阅读