2010-02-21 137 views
13

问题出在这里:我今天开始使用mysqli进行交换。没什么大不了的,只需要改变一些陈述。一切都很好,没有错误......除了我无法执行任何查询。我有双重和三重检查我的语法。我甚至开始创建它应该返回一个错误的情况(试图将它插入到不存在的表,或者超出列限制的值或不匹配类型的表),并且......什么也不是。它不会返回错误,它不会写入。它会抱怨,如果参数一不是一个mysqli类型。在执行mysqli_query时出现问题

下面是相关代码:

$con = mysqli_connect("localhost", "root", "","test"); 

if (mysqli_connect_errno()) { 
printf("Connect failed: %s\n", mysqli_connect_error()); 
exit(); 
} 

$query = "INSERT INTO files VALUES (NULL, 5, 'hello')"; 
mysqli_query($con, $query); 

并没有什么。它运行没有问题,但它从不写入记录。我甚至可以将$查询更改为“hdjhkfhhjfkd”,它运行没有问题。 mysqli_query()只是不执行,句点。我唯一能做出反应的是如果我将$ con改为其他任何东西,那么它会抱怨它需要一个mysqli类型。

想法?这让我疯狂。

+0

是否启用了PHP配置文件中的mysqli模块。我认为它默认是禁用的。你自己编译了PHP吗?你的配置是什么? – 2010-02-21 05:29:21

+0

mysqli_query()返回什么? – Marcin 2010-02-21 05:34:19

+0

不,它不会为特定语句返回任何内容。这只是一个INSERT。 就phpinfo()而言,启用mysqli。我正在运行Zend Community Edition的最新版本。 PHP 5.3,MYSQL 5.0.5 – GilloD 2010-02-21 05:38:49

回答

28

你检查过mysqli_query()的返回值吗?如果发生错误,它将返回FALSE。在这种情况下,mysqli_error()会为您提供有关该错误的更多信息。

<?php 
$con = mysqli_connect("localhost", "root", "", "test"); 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "INSERT INTO files VALUES (NULL, 5, 'hello')"; 
echo "<pre>Debug: $query</pre>\m"; 
$result = mysqli_query($con, $query); 
if (false===$result) { 
    printf("error: %s\n", mysqli_error($con)); 
} 
else { 
    echo 'done.'; 
} 
+0

非常感谢!看起来像一个流氓语法错误。我终于找到了很多单引号的狩猎。 – GilloD 2010-02-21 06:54:28

+0

您应该在开发服务器上设置display \ _startup \ _errors = 1,或者留意错误日志。在脚本部分有一些“有保证”的视觉反馈,这也是一个好主意。 – VolkerK 2010-02-21 08:55:03

-3

我也患有这个问题。 最后,我发现问题发生在我与数据库的连接中。您可以使用以下连接代码轻松连接数据库。

$db_connect = mysqli_connect("host", "user", "password", "database"); 

我希望这段代码能帮到你。如果您有任何问题,请发表评论。谢谢你。

0
public function connection() 
{ 
     $con=mysqli_connect('localhost','root','','int'); 
     return $con; 

} 
public function login($u,$p) 
{ 
    $fd=$this->connection(); 
    $sql = "SELECT * FROM user WHERE (uname = '".$u."' AND pass = '".$p."')"; 
    $result = mysqli_query($fd,$sql); 
    $num = mysqli_num_rows($result); 
    if($num) 
    { 
     return TRUE; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 
+3

尝试添加一个解释到您的答案,除了一个简单的代码块。 – 2016-04-06 11:32:58