2016-01-12 62 views
-1

我只想选择并显示数据库中的数据。我想我在网上关注所有的教程等,但有些地方是错误的。我的代码:从数据库中选择数据时遇到困难

<?php 

$user = 'root'; 
$pass = 'root'; 
$db='test'; 
$host ='localhost'; 
$name = 'ryan'; 


$mysqli = new mysqli($host, $user, $pass, $db); 
if ($mysqli->connect_error) { 
    die('Connect Error (' . $mysqli->connect_errno . ') ' 
      . $mysqli->connect_error); 
} 
    else{ 
     echo 'Checkpoint 1 <br>'; 
    } 

$sql = "SELECT * FROM user WHERE name LIKE ryan"; 
$result = $mysqli->query($sql); 
$num_results = $result->num_rows; 
echo'checkpoint 2'; 
$row = $result->fetch_assoc(); 
echo'checkpoint 3'; 
?> 

我能到“检查点2”,但由于某些原因,FETCH_ASSOC()函数不会做任何事情。我正在使用Netbeans,并且由于num_rows函数的作用,fetch_assoc()甚至不会变绿。如果我在末尾删除了两个括号,fetch_assoc也会变成绿色。

回答

0

尝试此查询:

$sql = "SELECT * FROM user WHERE name LIKE 'ryan'"; 
+0

你的先生是一个天才,这个工作完美。非常感谢。 – ratrace123

+0

@ ratrace123你也可以使用这个查询进行通配符搜索'$ sql =“SELECT * FROM user WHERE name LIKE'%ryan%'';' – Gunasegar

0

你必须绑定你喜欢的语句作为

$param = "%ryan%"; 
$result = $mysqli->prepare("SELECT * FROM user WHERE name LIKE ?"); 
$result->bind_param("s", $param); 
$result->execute(); 
$num_results = $result->num_rows; 
$row = $result->fetch_assoc(); 
+0

每次绑定一个准备好的语句,先没有约束? – ratrace123

+0

绑定语句是安全的,并防止你形成SQL注入! – Saty

1

你的MySQL查询语法是错误的。
LIKE需要的模式,通过引号没有封闭它,你基本上提供了一个列名

更改您这样的查询

SELECT * FROM `user` WHERE `name` LIKE 'ryan'; 

另外添加一些错误处理查询

$result = $mysqli->query($sql) or die(mysqli->error); 
+0

这也工作了,也许我很幸运,当我用关键字的W/O后面滴答。 – ratrace123

+0

要点1和2;他们不需要使用反引号进行转义,因为它们不是保留字,它们只是关键字。这些函数旁边没有'(R)'https://dev.mysql.com/doc/refman/5.5/en/keywords.html –

+0

我站好了,谢谢,编辑了答案。 –

0
<?php 

$user = 'root'; 
$pass = 'root'; 
$db='test'; 
$host ='localhost'; 
$name = 'ryan'; 


$mysqli = new mysqli($host, $user, $pass, $db); 
if ($mysqli->connect_error) { 
    die('Connect Error (' . $mysqli->connect_errno . ') ' 
      . $mysqli->connect_error); 
} 
    else{ 
     echo 'Checkpoint 1 <br>'; 
    } 

$sql = "SELECT * FROM user WHERE name LIKE 'ryan'"; 
$result = $mysqli->query($sql); 
$num_results = $result->num_rows; 
print_r($num_results);exit; 
echo'checkpoint 2'; 
$row = $result->fetch_assoc(); 
echo'checkpoint 3'; 
?> 
0

通过使用quotes可以使用字符串输入与LIKE语句,并且%标志。

修改代码:

$sql = "SELECT * FROM user WHERE name LIKE '%ryan%'"; 
$result = $mysqli->query($sql); 
$num_results = $result->num_rows; 
$row = $result->fetch_assoc(); 

我有什么改变?

  1. 在双引号内为输入字符串添加单引号。
  2. 在开始添加%符号和结束对匹配的类型都
相关问题