让您的代码回显您的查询,然后在 MySQL 工作台或 PHPMyAdmin 等工具中对其进行测试。
如果您正在寻找一个ID,那将是准确的。您要小心在语句中使用 LIKE。例如。如果有人查找 id='1' 它会返回一条记录。id LIKE '%1%' 返回所有包含“1”的记录。
这安全多了。特别是因为根据您的示例,您没有对 ID 做任何事情。
<?php
$query = "SELECT count(*) FROM record WHERE ID='$id'";
$count = mysql_result(mysql_query($query),0);
if($count > '0'){
echo "ID already exists<br>";
} else {
echo($query);
die();
}
?>
我没有测试过,但应该使用类似这样的东西,或者 MySQLi 语句,但你需要学习这种风格的编码方式。
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$query = "SELECT count(*) FROM record WHERE ID='$id'";
//Checking for no results.
if(!empty($dbh->query($query))){
echo "ID already exists.";
} else {
echo "ID does not exist.";
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
哦,是的,记住:
警告:如果您的应用程序没有捕获从 PDO 构造函数抛出的异常,则 zend 引擎采取的默认操作是终止脚本并显示回溯。此回溯可能会显示完整的数据库连接详细信息,包括用户名和密码。您有责任明确地(通过 catch 语句)或通过 set_exception_handler() 隐式地捕获此异常。