Php Mysql无法进行查询
我正在尝试使用PHP将一些数据放入我的MySQL表中。我已经从数据库中将一些数据检索到变量中。我们可以说:Php Mysql无法进行查询,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试使用PHP将一些数据放入我的MySQL表中。我已经从数据库中将一些数据检索到变量中。我们可以说: $data = "Some variable"; 但问题是在 一些变量我有这样的数据 $data = $row['some data']; 我不知道我正在抓取什么,可能是某个时间,可能是超链接,可能是某个时间,可能只是一些垃圾数据。当我尝试将数据放入MySQL表时,问题就出现了 我试图重复这个问题,假设这就是问题所在 $query = "INSERT into table VALUES
$data = "Some variable";
但问题是在
一些变量
我有这样的数据
$data = $row['some data'];
我不知道我正在抓取什么,可能是某个时间,可能是超链接,可能是某个时间,可能只是一些垃圾数据。当我尝试将数据放入MySQL表时,问题就出现了
我试图重复这个问题,假设这就是问题所在
$query = "INSERT into table VALUES(0, '$data')";
结果是:
INSERT INTO table VALUES(0,'Donatted book:'25 ways to improve life');
这本书后面有一段引文。但是我不能改变它,因为这里的数据来自另一个数据库。如何使此insert命令工作
下面是我的代码是如何工作的
<?php
$query = "SELECT*from table WHERE id=$content_id";
$data = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($data);
$data = $row['col'];
$query2 = "INSERT INTO table VALUES(0, $data)";
mysqli_query($query2);
?>
您应该使用
$dbtype=“mysql”;
$dbhost=“localhost”;
$dbname=“数据库名称”;
$dbuser=“username”;
$dbpass=“password”;
//创建PDO连接
$conn=newpdo(“mysql:host=$dbhost;dbname=$dbname”,$dbuser,$dbpass);
//执行INSERT语句
$sql=“插入表值(:value1,:value2)”;
$q=$conn->prepare($sql);
//此值由PDO转义
$q->execute([':value1'=>$data['some\u data\u 1'],':value2'=>$data['some\u data\u 2']);
因为您正在使用中提到的mysqli.*
API
您正在寻找:
但更容易的是使用
旁注:
表格
是一个,因此您必须在其周围加上反勾号,例如
$query2 = "INSERT INTO `table` VALUES(0, $data)";
//^ ^
另外,您在第二个查询中缺少了作为第一个参数的$dbc
,请按如下方式添加它:
$row = mysqli_query($dbc, $query2);
我还建议您使用或die(mysqli_error($db));
检查错误,例如
$row = mysqli_query($dbc, $query2) or die(mysqli_error($dbc));
代码不需要再查询我的问题是specefic和@fred如何转义数据?我不明白,$data是字符串还是数组?看看mysql\u real\u escape\u string()函数。@geekishfellow代码不需要重新查询是的,它是必需的,因为它取决于您使用的MYSQL API!@VincentDecaux它是一个string@geekishfellow,我强烈建议,如果你需要别人的帮助,你应该向他们提供他们要求的信息。记住,我们没有义务帮助你。你应该使用OP,可能已经使用PDO.Yo了你不知道他在用什么,因为他没有向我们展示他的代码,我们就知道了:他使用的是
mysqli.*
API!而不是PDO。@Rizier123我只是想向他/她展示一些好的实践。仅此而已。$query2=“插入表值(0,mysqli\u real\u escape\u字符串($data))可以这样使用吗?@geekishfellow如果你把它连接起来,这是可能的,但我不推荐,因为如果你有多个值,它会变得非常不可读!所以只需在你的SQL字符串之前使用它,例如$data=mysqli\u real\u escape\u string($dbc,$data);
(顺便说一句:$row=mysqli\u query($query2)
您缺少了$dbc
作为第一个参数)@geekishfellow我可以知道,您为什么不接受我的答案吗?有什么问题吗?我使用了您的答案,但我现在接受的答案似乎是一个更好的答案,而且很有用。我接受了您的答案,并对另一个答案投了赞成票。