2013-03-31 73 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