2013-03-31 34 views
0

我已經就此代碼提出了一個問題,我正在處理,而不是針對同一問題。無論哪種方式抱歉轉發!mysqli_query無法識別數據庫?

所以我在與代碼的麻煩,具體如下:

<?php 
// Create connection 

$host = "localhost"; 
$username="tudor"; 
$password="passw0rd"; 

$con=mysqli_connect($host, $username, $password); 
if(! $con) 
{ 
    die('Could not connect: ' . mysqli_error()); 
} 
echo 'Connected successfully<br />'; 


$db_1 = mysqli_select_db($con, 'db_1'); 
if (! $db_1) { 
die('Could not select database: ' . mysqli_error()); 
} 
else { 
echo "Database successfully selected<br />===============================<br />"; 
} 

//=================================== 



$a = 1; 
$b = 2234; 

$table = "CREATE TABLE info (id INT NOT NULL AUTO_INCREMENT, city CHAR(40), country CHAR(40))"; 
if (! $table) { 
die('Could not create table ' . mysqli_error($con)); 
} 
else { 
echo "Table created<br />"; 
} 

$insert = "INSERT INTO info (city, country) VALUES ($a, $b)"; 
if (! $insert) { 
die('Could not insert ' . mysqli_error($con)); 
} 
else { 
echo "Inserted<br />"; 
} 

$select = "SELECT * FROM info"; 


$result = mysqli_query ($con, $insert); 
if (! $result) { 
die('Result not working ' . mysqli_error($con)); 
} 
else { 
echo "Result working<br />"; 
} 

echo "result: ".$result['city']. " "; 


mysqli_close($con); 

?> 

這個輸出(塊引用不顯示分頁符):

連接成功數據庫成功入選 == =============================表創建插入結果不工作表'db_1.info'不存在

什麼d oes它的意思是「表'db.info'」不存在?它清楚地表明我的信息表已創建... 我試圖做的是顛倒$ result查詢中的變量:$ result = mysqli_query($ insert,$ con);因爲我曾在一本書中看過這種語法。然而,所有這給在輸出以下消息:

警告:mysqli_query()預計參數1是mysqli的,給予串用C :\ WAMP ...

思考的人?提前致謝!

編輯:非常感謝大家的幫助,非常感謝!

回答

0

確定以獲取從查詢數組。這是你的代碼。

if(! $con) 
{ 
    die('Could not connect: ' . mysqli_error()); 
} 
echo 'Connected successfully<br />'; 
if (!$con) {trigger_error("Could not connect to MySQL: " . mysqli_connect_error()); } 
else { echo "Database successfully connected<br />===============================<br />"; } 
$a = 1; 
$b = 2234; 
$table = mysqli_query($con,"CREATE TABLE IF NOT EXISTS info (`id` int(11) unsigned NOT NULL auto_increment, 
`city` CHAR(40), 
`country` CHAR(40), PRIMARY KEY (`id`))ENGINE=MyISAM DEFAULT CHARSET=utf8"); 
    if (!$table) { 
die('Could not create table ' . mysqli_error($con)); 
} 
else { 
echo "Table created<br />"; 
} 
$insert = mysqli_query ($con,"INSERT INTO info (city, country) VALUES ('$a', '$b')"); 
if (!$insert) { 
die('Could not insert ' . mysqli_error($con)); 
} 
else { 
echo "Inserted<br />"; 
} 
$select = mysqli_query ($con,"SELECT * FROM info"); 
$res=mysqli_fetch_array($select); 
if (! $res) { 
die('Result not working ' . mysqli_error($con)); 
} 
else { 
echo "Result working<br />"; 
} 

echo "result: ".$res['city']. " "; 
echo "result: ".$res['country']. " "; 
mysqli_close($con); 
+0

1)你忘了在CREATE TABLE上添加mysqli_query --2)這種連接方式更快 - 3)也忘了在CREATE TABLE上設置PRIMARY KEY('id') –

+0

太棒了!像魅力一樣工作,非常感謝!我看到了兩個變化:在表創建部分中添加的細節以及從($ con,$ insert)到($ con,$ result)的更改。雖然後者是一個問題,但我認爲這是你在表格語法中改變了表格錯誤的差異。你能解釋一下爲什麼這使它起作用嗎? 編輯:對不起,我剛剛看到你的評論。爲什麼這個連接更快?是否總是需要查詢表的創建? – tmnol

+0

不!現在!!!這是工作!插入查詢中還有一些錯誤。剛編輯它。請複製並檢查下半部分的錯誤 –

0

表「db_1.info」不存在

意味着,表info不以dB爲單位db_1存在,因此,要確保,如果是這樣的話。

+0

@ db_db_1中的@TudorManole table'info'不存在,因爲'CREATE TABLE ...'查詢從未在'mysqli_query()'中運行。它只是設置爲一個PHP變量。 – Sean

+0

@Sean恩,不管它是否被創建都沒關係,因爲你試圖從不存在的表中獲取數據。這是'信息' – 2013-03-31 17:22:03

+0

我明白了大家的問題。感謝所有的幫助,真的很感激! – tmnol

1

你是不是在$insert上做$table一個mysqli_query()mysqli_query()面前,你是不是做一個mysqli_query()$select

$table = "CREATE TABLE info (id INT NOT NULL AUTO_INCREMENT, city CHAR(40), country CHAR(40))"; 
if (! $table) 

$insert = "INSERT INTO info (city, country) VALUES ($a, $b)"; 
if (! $insert) { 

$select = "SELECT * FROM info"; 

$result = mysqli_query ($con, $insert); 
if (! $result) 

嘗試添加mysqli_query() -

$table_sql = "CREATE TABLE `info` (`id` INT NOT NULL AUTO_INCREMENT, `city` CHAR(40), `country` CHAR(40), PRIMARY KEY (`id`))"; 
$table = mysqli_query ($con, $table_sql); 
if (! $table) { 
die('Could not create table ' . mysqli_error($con)); 
} 
else { 
echo "Table created<br />"; 
} 

$insert_sql = "INSERT INTO `info` (`city`, `country`) VALUES ('$a', '$b')"; 
$insert = mysqli_query ($con, $insert_sql); 
if (! $insert) { 
die('Could not insert ' . mysqli_error($con)); 
} 
else { 
echo "Inserted<br />"; 
} 

$select = "SELECT * FROM `info`"; 

$result = mysqli_query ($con, $select); 
if (! $result) { 
die('Result not working ' . mysqli_error($con)); 
} 
else { 
echo "Result working<br />"; 
} 

編輯 此外,這條線將失敗 -

echo "result: ".$result['city']. " "; 

,你必須使用mysqli_fetch_array()

$results = mysqli_fetch_array($result); 
echo "result: ".$results['city']. " "; 
+0

我在代碼末尾談到這個查詢: $ result = mysqli_query($ con,$ insert); – tmnol

+0

查看我更新的答案。您必須在'$ table'和'$ insert'上執行'mysqli_query()',然後才能在'$ select'上執行。這行'$ result = mysqli_query($ con,$ insert);'因爲你試圖插入'$ insert',所以'$ table'從不創建。實際上,您並沒有在該查詢中執行'$ select',因爲您正在使用'$ insert'而不是'$ select'。 – Sean

+0

這很有道理,非常感謝提示。但是,現在我添加了您向我展示的更改,無法創建表格。它給出了以下錯誤消息:「不正確的表定義;只能有一個自動列,它必須被定義爲一個鍵」 – tmnol