2016-11-30 67 views
0

我正在学习一些关于mysql,php之类的东西。我正在使用共享主机方案,因此从设置更改的角度来看,这是非常有限的。共享主机上的空白MySQL错误

我试图运行通过PHP一个简单的mysql的SELECT命令,但我得到的回复是一个空白错误

<?php 
$typeID = $_GET['tid']; 
//variables for the database server 
$server = "localhost"; 
$user = "codingma_rbstock"; 
$pwd = "[email protected]%V{%RI+h"; 
$db = "codingma_rbstock"; 

//variables for the database fields 
$itemNo; 
$itemNm; 
$itemDesc; 
$buyPr; 
$sellPr; 
$quan; 
$dept; 

//database connection 
//create connection 
$conn = new mysqli($server, $user, $pwd, $db); 

//if the connection fails throw an error. 
if ($conn->connect_error){ 
    die("Connection Failed: " . $conn->connect_error); 
} 

echo "Welcome to " . $typeID . "<br>"; 

$sql = "select ITEM_NAME from stock where ITEM_NO='00001'"; 

if ($conn->query($sql) === TRUE){ 
    $res = $conn->query($sql); 
     if ($res->num_rows > 0){ 
      echo "success"; 
     } 

}else{ 
    echo "Error: " .$sql . "<br>" . $conn->error; 
} 

echo $res; 

?> 

我已经检查过这似乎是连接到数据库的罚款(我改变了几个帐户的详细信息,看看是否抛出了一个不同的错误,它确实)。

我相信我错过了一些完全明显的东西!以下是错误的文本输出;

错误:从股票选择ITEM_NAME其中ITEM_NO = '00001'

感谢您的帮助。

+1

请问您可以发布执行结果g在您的数据库服务器中显示CREATE TABLE股票? – Bustikiller

+0

尝试打电话给你这样的页面:'http://localhost/yourpage.php?tid = 3455' – Hackerman

+0

告诉我,如果这样的工作? – Hackerman

回答

1

你的问题是在这条线

if ($conn->query($sql) === TRUE){ 

你正在做一个变量类型检查(===),即对比的结果总是会失败,因为,只要你在你的表有数据和您的查询不会失败$conn->query($sql)将不会返回一个布尔值

mysqli::query documentation说:

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE. 

您使用这里SELECT,T herefore一个全成结果不会是布尔

尝试切换到

if ($conn->query($sql) == TRUE){ 

甚至更​​好删除,如果完全

EDIT

的那部分代码更好的方法是:

$res = $conn->query($sql); 
     if ($res->num_rows > 0){ 
      echo "success"; 
     } 

if ($res === false) { 
    echo "Error: " .$sql . "<br>" . $conn->error; 
} 
+0

非常感谢你解决了我的问题! – Mikecul

+0

@Mikecul不用客气。请检查更新,我添加了一个小代码recommandation。 – Dragos

+0

如果您将我的答案标记为已接受,我也会很高兴;) – Dragos