2016-10-30 61 views
-1

我有一個名爲'input1'的輸入框,名爲register.php。我想要做的是從input1中獲取值並將其存儲到數據庫中。當用戶點擊register.php的提交按鈕時,他將被重定向到另一個名爲demo.php的表單,該表單應將輸入框input1中輸入的值存儲到數據庫中。警告:mysqli_query()期望參數1爲mysqli,字符串與數據庫一起給出

出於某種原因

我得到以下錯誤:警告:mysqli_query()預計參數1是在C中給出的mysqli,字符串:\ XAMPP \ htdocs中\ MYAPP \ demo.php上演示線21。 PHP的;

demo.php:

<?php 
//Step1 
$db = mysql_connect('localhost','root','','forms1') 
or die('Error connecting to MySQL server.'); 

$db_selected = mysql_select_db('forms1' , $db); 

if(! $db_selected) { 

    die('db not selected'. mysql_error()); 
} 

echo "connected"; 


$value =$_POST['input1']; 


$sql =" INSERT INTO demo (input1) VALUES ('$value') "; 

mysqli_query($sql , $db); 

?> 

register.php:

<form action ="demo.php" method ="post" /> 

<p> Input 1:<input type ="text" name ="input1" /> </p> 
<input type ="submit" value ="submit"> 

</form> 
+2

你只混了'MySQL的&mysqli'.use'mysqli'而不是'mysql'.'mysql'已從最新版本的PHP中棄用。 –

回答

0

如果你看一下在mysqli_query函數的文檔,你會看到,第一個參數必須是你的數據庫連接資源(http://php.net/mysqli_query)。看起來你剛剛混淆了你的參數。它應該是:

mysqli_query($db, $sql);

此外,你應該使用mysqli_select_dbmysqli_connect功能(C.F. http://php.net/mysqli_select_dbhttp://php.net/mysqli_connect),而不是mysql_select_dbmysql_connect(因爲msyql_select_db和的mysql_connect是depricated)。如果切換到mysqli_select_db,注意到第一個參數也是數據庫連接的資源,所以這將是:

$db = mysqli_connect('localhost','root',''); $db_selected = mysqli_select_db($db, 'forms1');

或者只是:

$db = mysqli_connect('localhost','root','forms');

順便說一句,你不應將參數值直接傳遞到您的查詢中。你應該使用預處理語句:http://php.net/manual/en/mysqli.prepare.php

如果你不使用準備好的語句,您運行的SQL注入攻擊的風險(CF http://www.acunetix.com/websitesecurity/sql-injection/

+0

我將它們切換爲:mysqli_query($ db,$ sql);但我仍然得到這樣的警告: 警告:mysqli_query()期望參數1是mysqli,資源在C:\ xampp \ htdocs \ myapp \ demo.php在線32 – user3289032

+0

@ user3289032閱讀其餘答案。您需要使用所有msyqli_函數(例如mysqli_select_db,mysql_connect等) – Cully

相關問題