2016-11-30 58 views
0
<?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):在/应用程序没有这样的文件或目录/ MAMP/htdocs目录/practice/preparedStatement.php第5行 连接失败:没有这样的文件或目录预处理语句连接错误:没有这样的文件或目录

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

+3

'new mysqli()'有4个参数,第四个是数据库的名称 – RiggsFolly

+1

是你在这里发布的代码preparedStatement.php?你怎么称呼它? –

+0

我用命令行来检查代码的工作情况,即使提到数据库,它也会引发同样的错误。 –

回答

0

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

打开命令行,然后键入:

locate mysql.sock 

之后,编辑php.ini,并设置:

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

替代的mysql.sock的位置代替/路径/到/mysql.sock

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

+0

;本地MySQL连接的默认套接字名称。如果为空,则使用内置的 ; MySQL的默认值。 mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock 这已经在php.ini文件中设置 –

相关问题