【问题标题】:Prepared Statement connection error : No such file or directory [duplicate]准备好的语句连接错误:没有这样的文件或目录[重复]
【发布时间】:2017-04-15 07:39:39
【问题描述】:
<?php
echo "Lets run the program";
$id = 1;
$conn = new mysqli('localhost', 'root', 'root');
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$stmt = $conn->stmt_init();

if($stmt->prepare("Select Genre_Name from Practice.genre_list where Genre_ID = ?")){
    $stmt->bind_param(i,$id );
    $stmt->execute();
    $stmt->bind_result(s, $result);
    $stmt->fetch();
    echo $result;
    echo "in if function";
}
else{
    echo "some issue";
}
?>

output:

让我们运行程序 警告:mysqli::mysqli(): (HY000/2002): 第 5 行 /Applications/MAMP/htdocs/practice/preparedStatement.php 中没有这样的文件或目录 连接失败:没有这样的文件或目录

在网上搜索后,我检查了 php.ini 文件中的配置,mysql.sock 设置正确,没有问题。 仍然无法弄清楚为什么准备好的语句不起作用,我可以使用 mysqli_connect() 的传统方法进行连接,但不能使用 OOA 方法。

【问题讨论】:

  • new mysqli() 有 4 个参数,第四个是你的数据库名称
  • 你贴在这里的代码是preparedStatement.php吗?你怎么称呼它?
  • 我使用命令行检查代码的工作,即使提到数据库,它也会抛出同样的错误。
  • 第 5 行是什么?
  • 第 5 行对应连接语句,上面还有 1 个 echo 语句我删除了。第 5 行如下所示 $conn = new mysqli('localhost', 'root', 'root' );

标签: php mysql prepared-statement


【解决方案1】:

我假设您在 Linux 上运行。 PHP.ini 文件中 mysql.default_socket 的设置未指向 mysql 套接字。

打开命令行并输入:

locate mysql.sock

之后,编辑你的 PHP.ini 并设置:

mysql.default_socket = /path/to/mysql.sock

用mysql.sock的位置代替/path/to/mysql.sock

该文件很可能位于 /var/lib/mysql/mysql.sock 中,但可能因您的服务器而异。

【讨论】:

  • ;本地 MySQL 连接的默认套接字名称。如果为空,则使用内置的 ; MySQL 默认值。 mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock 这个已经在php.ini文件中设置了
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 2020-11-07
  • 2018-05-25
  • 2013-08-03
  • 1970-01-01
  • 2020-03-30
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多