无法在php和mysqli_query

时间:2015-07-23 16:20:35

标签: php mysql mysqli

我有一个html表单,我想使用phpmyadmin将其数据提交到wamp中的特定数据库,连接成功完成。但是,无法提交数据。我在提交表单中的数据后收到此消息:

Successful connection
( ! ) Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in C:\wamp\www\Ex\insert-data.php on line 11
Call Stack
#   Time    Memory  Function    Location
1   0.0005  136600  {main}( )   ..\insert-data.php:0
2   0.0023  144480  mysqli_query ( )    ..\insert-data.php:11
Error inserting new records!

'insert-data.php'中的我的代码是:

<?php


if(isset($_POST['submitted'])){
 include('connect.php');
 $fname = $_POST['fname'];
 $lname = $_POST['lname'];

      $sqlinsert=
    "INSERTINTO`test`(`FName`,`LName`)VALUES('$fname','$lname')";

if(!mysqli_query($dbconn,$sqlinsert)){

 die('Error inserting new records!');
}
echo "1 record added to database";



}

?>


<!DOCTYPE html>      



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<h1>Insert Data into DB</h1>
</head>

<body>
    <form method="post" action="insert-data.php" >
    <input type="hidden" name="submitted" value="true" />

    <label>First Name</label>
    <input type="text" name="fname"  />  
    <label>last Name</label>
    <input type="text" name="lname"  />

    <input type="checkbox" name="check" />
    <input type="radio" name="radios" />
    <input type="submit" value="submit"></button>

    </form>

  </body>
  </html>

有什么想法吗? ....谢谢

2 个答案:

答案 0 :(得分:2)

您在评论中发布了连接代码(属于我可能添加的问题),基于mysql_

您需要使用mysqli

那些不同的MySQL API不会混用。您必须使用从连接到查询的相同内容。

从手册中摘录的例子:

<?php 
//conection:
$link = mysqli_connect("myhost","myuser","mypassw","mybd") 
        or die("Error " . mysqli_error($link)); 

并记住将$link替换为$dbconn和您自己的凭据。

这对您没有帮助:

die('Error inserting new records!');

这样做:

or die(mysqli_error($dbconn));

由于您对此不熟悉,请立即使用预先准备好的陈述。

参考文献:

您现有的代码向SQL injection开放。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

为了争论,请在INSERTINTO之间加一个空格:

$sqlinsert= "INSERT INTO `test` (`FName`,`LName`) VALUES ('$fname','$lname')";

你似乎在评论中提到了它们是分开的,但我还是说了。

  • 另外,请尝试将您的连接/包含在条件语句之上。

<强>连接:

您的连接应该是这样,并用您自己的凭据替换xxx

$db_host     = "xxx";
$db_username = "xxx";
$db_pass     = "xxx";
$db_name     = "xxx";

$dbconn = mysqli_connect("$db_host","$db_username","$db_pass","$db_name") 
or die("Error".mysqli_error($dbconn));

,没有别的。根本没有mysql_的实例。

旁注:@符号是错误抑制器。一切正常后,您可以将它们重新添加。

结束说明:

感谢Liam(Sorsby)。

答案 1 :(得分:0)

使用分隔的单词,例如

INSERT INTO `test` (`FName`,`LName`) VALUES ('$fname','$lname')";