2017-04-17 85 views
0

我已经看了这里。请耐心等待,因为我是php和mysql的新手。 我得到了WAMPP安装&似乎工作正常。我在phpMyAdmin和“firsttable”中创建了一个简单的“测试”数据库。我可以使用w3schools中的示例做一个简单的连接,但试图选择&我输入的显示数据仅引发错误。基本的mysql数据提取使用php

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 

// Connect 
$conn = mysqli_connect($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT reference, firstname, lastname, room FROM firsttable"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "id: " . $row["reference"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "room:" . $row["room"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 


if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$conn->close(); 
?> 

首先,我得到17行的一个读取解析错误:

if ($result->num_rows > 0) { 

错误说:试图让非对象的属性。

我试着将标签中的整个php代码包装起来并保存为html,但之后似乎没有发现任何行数据。

我能够使用非常简单的代码连接成功。我可以确认数据库在那里,表格以及我添加的内容也是如此。

请问我在做什么错?

+0

仅用于测试目的'var_dump($ result);' – Hackerman

+0

您需要将数据库添加到连接函数中。 –

+0

_“尝试获取非对象的属性。”_这意味着'$ result'不是一个对象,但是您试图将它作为一个对象来引用。如果你'var_dump($ result)'你会看到它实际是什么。查看'query()'函数的文档以了解可能得到的返回值。 –

回答

1

您需要指定当您连接数据库:

$database = 'test'; 

$conn = mysqli_connect($servername, $username, $password, $database); 

其中$database是你的数据库(在这种情况下test)这个名字。没有告诉它,MySQL不知道你的表所在的数据库。

此外,你应该总是包括你的数据库连接的错误检查(你有两个,你不需要最后一个)以及任何查询。没有这一点,你可以检查你的错误日志,以获得更多信息,当失败时。

+0

我做了上面的建议更改,并删除了最后一次错误检查,但我得到一个解析错误,说在上面的$ conn行上出现意外的“,”(唯一添加的“,”是之前的$数据库);“)。 – user258081

+0

@Alex,感谢您解释“var_dump($ result);”我刚刚从w3schools复制了代码示例,所以我真的不知道$ result不是一个对象还是试图将它作为一种手段引用它;我也想弄清楚下面的迷你Markdown格式。 – user258081

+0

@Shadow,我很困惑:你说我不检查任何sql错误,但应该。我不确定答案是否是杰伊的原创,还是来自弗雷德的编辑,但它说我有两个错误检查,并建议我不需要并且应该放弃其中一个。我也会检查我的错误日志。 – user258081