mySQL 连接无法正常工作

Posted

技术标签:

【中文标题】mySQL 连接无法正常工作【英文标题】:mySQL connection not working properly 【发布时间】:2017-07-11 16:58:53 【问题描述】:

我对 SQL 还很陌生,我正在尝试编写代码来插入消息表单中的信息。下面是 SQL 代码:

$con = mysqli_connect($hostname,$username,$password,$db);

// Check connection
if (mysqli_connect_error()) 
  echo "Failed to connect to MySQL: " . mysqli_connect_error();


$name = mysqli_real_escape_string($con, $_POST['name']); 
$email = mysqli_real_escape_string($con, $_POST['email']); 
$message = mysqli_real_escape_string($con, $_POST['message']); 

$sql = "INSERT INTO messages (name, email, message) VALUES ( '$name' , '$email' , '$message' )";


if (!mysqli_query($sql)) 
die ('Error: ' . mysqli_error());

else 
echo "<html><script language='javascript'> alert('Thank you for your submission.'),window.location = 'home'</script></html>";

此代码返回“错误:”,我将其解释为它认为存在错误,但没有任何错误。 mysqli_connect 中的连接变量都是正确的,但我不确定我是否正确使用了 mysqli_real_escape_string 甚至 $sql 语句,因为这段代码也没有在我的数据库中插入任何内容。提前致谢。

【问题讨论】:

您正在混合使用 mysql_mysqli_。修复它,然后查看准备好的语句。 @AlexTartan 我更改了它,但我仍然收到“错误:” 你没有将 $con 传递给 mysqli_query() @PeterFeatherstone 我该怎么做? 你已经在用你的mysqli_real_escape_string() 来电了... 【参考方案1】:

根据mysqli_query() 文档,如果您使用的是过程符号,则需要包含您的 mysqli 链接:

混合 mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

这建议您需要将$con 传递给mysqli_query(),就像您对其他函数调用一样,如下所示:

mysqli_query($con, $sql)

另外,请查看并阅读有关参数化的信息,因为您的代码不应该在实时站点上使用,因为您容易受到 SQL 注入的影响。请花时间阅读this 并了解如何预防。

【讨论】:

【参考方案2】:

尝试以这种方式运行查询

mysqli_query($con, $sql);

mysqli_query 需要指向您的数据库连接的链接,即“$con”

【讨论】:

以上是关于mySQL 连接无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Mysql与本地主机连接正常但无法与IP地址连接

适用于 Windows 的 ClickHouse MYSQL 驱动程序无法正常工作

现场的PHP远程连接无法正常工作[重复]

MySQL休眠异常

WSO2流处理器与mysql数据库集成无法正常工作

无法连接 - 无效设置