我在Hostmysite.com上设置了MySQL数据库。它连接得很好,我的php文件的想法是获取表单值并将其输入到SQL数据库中。我正在尝试通过比较电子邮件来创建一个不允许重复条目的功能,以查看它是否存在于数据库...
我认为PHP代码是正确的,但在die()上它返回没有找到这样的文件或目录???这没有用。
<?php
//connection variables is excluded to get to the point of the problem
$con = mysqli_connect($host, $user, $pass, $db);
if (!$con){
die("Connection failed: " .my_sqli_connect_err());
}
$email = $_POST["email"];
$email = mysqli_real_escape_string($con, $email);
//see if email exists in database
$findEmail = "SELECT * FROM rsvpWedding WHERE email='" . $email."';";
$results = mysql_query($findEmail)or die(mysql_error());
?>
在:
$results
返回没有这样的文件或目录?我不明白SQL语句是否正确,我相信我的PHP代码也是正确的。
我不知道这是否与此问题有关,但这确实混合了:
mysqli_*();
与
mysql_*();
***** UPDATE ******
我相信我理解为什么我收到没有找到这样的文件或目录的错误。根据网页:http://php.net/manual/en/function.mysql-query.php当执行sql_query()时,它会尝试连接到在
上执行的链接sql_connect()
不是
sqli_connect()
如果找不到它会尝试尝试与没有参数的sql_connect()连接,如果失败则会产生错误。从在线研究我看到没有这样的文件或目录是正常的与sql_connect()错误相关联。
所以我想我对这篇文章的问题是如何使用sqli_ *语法创建资源的一些变化。我试过了
$results = mysqli_query($con, $findEmail) or die(mysql_error());
但仍然无法正常工作,它只是跳过整个代码块...甚至不会产生错误。
答案 0 :(得分:3)
这可能是由于没有为php配置正确的mysql.sock文件路径引起的。
因此请确保安装了mysql数据库引擎,并找到mysql.sock文件所在的位置。
然后你需要在php.ini文件中配置:
找到这些行,配置如下:
mysql.default_socket = /path/mysql.sock mysqli.default_socket = /path/mysql.sock pdo_mysql.default_socket = /path/mysql.sock
答案 1 :(得分:0)
您不能将mysqli_*
与mysql_*
混在一起。无论如何,以mysqli
的方式做到更安全:
//see if email exists in database
$stmt = $con->prepare('SELECT * FROM rsvpWedding WHERE email=?'); // question mark is a placeholder
$stmt->bind_param('s', $email); // 's' means it's a string
$stmt->execute();
$stmt->bind_result($result); // assign the result to your $result var
$stmt->fetch();
答案 2 :(得分:0)
你不打印任何东西,这就是为什么! 尝试使用mysqli_num_rows($ result)
回应那个
如果大于零则存在 如果没有那么你们都很好