php - 如何检查 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”。
显然,这是行不通的。但是应该怎么做呢?
对不起,如果这个问题很愚蠢。
解决方案
您需要从查询结果中获取行。
$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)
正在分配变量,而不是对其进行测试;比较使用==
.
推荐阅读
- java - 如何从 Firestore 中多个文档的数组中删除元素?
- angular - 如何在Angular中解密随机生成的加密值
- vim - 如何阻止 ac)change 复制到我的粘贴缓冲区?
- python - Airflow/Composer UnzipOperator 崩溃
- android - 如何配置 android 模拟器以匹配实际设备的屏幕?
- php - 乘以和更新来自两个不同表的两个 valor
- swift - 使用 SQLite.Swift 访问数据库时在展开可选时发现 nil
- java - 将包含 JSON 数组的字符串解析为对象
- performance - 写入 csv 的火花性能不佳
- c# - 如何使用 C# 将 SQLite Blob 转换为 GUID