2017-03-24 111 views
0

我在ubuntu 16.10上使用PHP 7和最新的mysql。这是当前的代码,我有删除MySQL行

<?php 
     $dbhost = 'localhost:3036'; 
     $dbuser = 'root'; 
     $dbpass = 'password'; 
     $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

     $sql = "DELETE FROM databasetable WHERE collumA LIKE '%Test7%'" ; 
     mysql_select_db('jdbdev'); 
     $retval = mysql_query($sql, $conn); 

     if(! $retval) { 
      die('Could not delete data: ' . mysql_error()); 
     } 

     echo "Deleted data successfully\n"; 

     mysql_close($conn); 

?> 
+0

它不是'columnA ='%test%'它是'columnA''%test%'' – Dimi

+0

您的错误在这里。 mysql_query有两个参数。第一个是你的数据库连接,第二个是你的查询本身。作为mysql_query($ conn,$ sql); – Akintunde007

+0

谢谢你,仍然不工作,因为我也试过像 – Brigitte

回答

0

应低于查询更改为

DELETE FROM databasetable WHERE collumA like '%Test7%' 

=like操作

0

之间的差异假设你想删除所有的行,其中collumA包含测试“Test7”,则需要使用like运算符,而不是=运算符:

DELETE FROM databasetable WHERE collumA LIKE '%Test7%' 
-- Here --------------------------------^ 
0

如果你想使用通配符%,那么你必须等代替=使用,所以改变你的SQL语句:

"DELETE FROM databasetable WHERE collumA LIKE '%Test7%'" 

此外,mysql功能很容易受到SQL注入,你应该使用mysqli或甚至更好的PDO来管理你的数据库。

+0

使用sqli或pdo也不起作用。 – Brigitte

+0

尝试将您的主机变量设置为localhost:$ dbhost =“localhost” –

0
$sql = "DELETE FROM databasetable WHERE collumA= '%Test7%'" ; 

应该columnA LIKE '%TEST7%'

$sql = "DELETE FROM databasetable WHERE columnA like '%test7%' 

喜欢和=都是different

0

尝试:

<?php 
     $dbhost = 'localhost'; 
     $dbuser = 'root'; 
     $dbpass = 'password'; 
     $db_name = 'jdbdev'; 
     $conn = mysqli($dbhost, $dbuser, $dbpass, $db_name); 

     try{ 
     if($conn->connect_error){ 
      echo 'Could not establish connection to database because '.$conn->connect_error; 
      } 
     }catch(Exception $ex){ 
      echo $ex->getMessage(); 
      exit; 
      } 

     $sql = "DELETE FROM databasetable WHERE databasetable.collumA LIKE '%Test7%'"; 
     $retval = $conn->query($sql); 

     if($retval === FALSE) { 
      die('Could not delete data: ' . mysql_error()); 
     } 

     echo "Deleted data successfully\n"; 

     mysql_close($conn); 

?> 

有时候,你必须引用数据库表盈方列

+0

谢谢,这也没有工作 – Brigitte

+0

那么问题必须从您的数据库连接。 – Akintunde007

+0

我把如果! $ conn打印不能连接,但它似乎连接,我得到了无法删除数据错误retval – Brigitte

0

这不是很清楚,我您尝试使用这个完成的任务:其中collumA =“% Test7%'“;

百分号是否应该像这样匹配?您可能知道,百分号是mysql中的通配符,它​​应该与LIKE一起使用而不是等号。

在这种情况下,您的条件将为:WHERE collumA LIKE '%Test7%'