2010-10-05 29 views
12
$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%s%'", mysql_real_escape_string('test')); 

echo $test; 

đầu ra:MySQL NHƯ + php sprintf

SELECT * FROM `table` WHERE `text` LIKE '%s 

nhưng nó nên đầu ra:

SELECT * FROM `table` WHERE `text` LIKE '%test%' 

Trả lời

34
... LIKE '%%%s%%'", mysql_real_escape_string('test')); 

Để in nhân vật % bạn cần phải thoát khỏi nó với chính nó. Do đó, hai chữ cái đầu tiên %% sẽ in các ký tự %, trong khi thứ ba là dành cho loại thông số %s. Bạn cũng cần có một số %% ở cuối.

+0

Cảm ơn bạn . Điều này đã giúp tôi. –

3

Hãy thử:

$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%%s%%'", mysql_real_escape_string('test')); 

Trong sprintf, nếu bạn muốn có được một dấu hiệu %, bạn phải chèn %%. Vì vậy, đó là %% cho ký tự đại diện đầu tiên %, %s cho chính chuỗi đó và %% cho ký tự đại diện cuối cùng %.

0
$test = "SELECT * FROM `table` WHERE `text` LIKE '%s%'" . mysql_real_escape_string('test'); 

echo $test; 
1

Bạn cần thoát dấu phần trăm có ký hiệu phần trăm %%.

$test = sprintf("SELECT * FROM `table` WHERE `text` LIKE '%%%s%%'", mysql_real_escape_string('test')); 

echo $test; 
1

Bạn đang bối rối. Để thống nhất, đặt những điều mà không phải là bên trong SQL dấu nháy đơn bên ngoài của sprintf() định dạng chuỗi:

$test = sprintf(
      "SELECT * FROM `table` WHERE" 
      . "`xt` LIKE '%s'", 
      "%" . mysql_real_escape_string("test") . "%" 
     );