2016-01-12 103 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. 在開始添加%符號和結束對匹配的類型都
相關問題