使用php

时间:2015-09-25 18:21:00

标签: php mysql copy submit row

我在新问题

下打开了此问题

我决定专注于使用PDO和mysqli的解决方案去... ...

INSERT row from another table using php PDO

感谢各位大家帮助我解决这个问题

-----------

我有两张相同的桌子。我在第一个表中执行搜索,并使用结果中显示的每一行的提交链接回显结果。请参阅以下代码...

echo "<div>".$results['Description']." - <a href='submit-ads-florida.php?Barcode=".$results['Barcode']."'>SUBMIT</a></div>";

&#34; submit-ads-florida.php&#34;如下......

<?php
include '../connect.php';

$query = "INSERT INTO adstable (Brand, Description, Price, Size, Price, Barcode) 
          SELECT Brand, Description, Price, Size, Price, Barcode FROM invtable 
          WHERE Barcode='".$mysqli->real_escape_string($_REQUEST['Barcode'])."";

$mysqli->query($query);
?>

我收到以下错误,我不确定这意味着什么。

  

成功连接。
  致命错误:在第7行的/home/myaccount/public_html/florida-ave/submit-ads-florida.php中调用非对象的成员函数real_escape_string()

我还在学习,并且我使用的是我找到的示例中的脚本,所以我可能没有使用正确的语法来解决问题。任何帮助表示赞赏。

更新

我提出了建议的更改。我的连接脚本是......

<?php
$servername = "localhost";
$username = "name";
$password = "pass";
$db = "database";

// Create connection
$conn = new mysqli($servername, $username, $password, $db);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully. ";
?>

我的submit-ads-florida.php脚本是......

<?php
include '../connect.php';

$query = "INSERT INTO adstable (Brand, Description, Price, Size, Price, Barcode) 
          SELECT Brand, Description, Price, Size, Price, Barcode FROM invtable 
          WHERE Barcode='.$conn->real_escape_string($_REQUEST['Barcode']).'";

$conn->query($query);
?>

问题 我不再收到错误,但是没有数据从invtable传递给adstable。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

编辑:我不能将所有这些放在一条评论中,因此将它放在这里。

您的错误清楚地表示&#34; $mysqli&#34;不是一个对象。基本上,主要错误是@mysqli 未定义。检查您是否拥有connect.php

否则

我一味地说!假设您的connect.php很好,因为您打印了“已成功连接”。&#39; 除此之外,你最后错过了单引号;一个编码建议不是要使它复杂,

<?php
include '../connect.php';

$barCode = $mysqli->real_escape_string($_REQUEST['Barcode']); // assign it here

$query = "INSERT INTO adstable (Brand, Description, Price, Size, Price, Barcode) 
          SELECT Brand, Description, Price, Size, Price, Barcode FROM invtable 
          WHERE Barcode='".$barCode."'";

$mysqli->query($query);
?>

注意:虽然您正在打印connection is succesfull,但您必须向我们展示您在connect.php中编码的内容,因为我不会将connect.php编码正确编码。

OP更改后更新:

现在很清楚为什么你得到一个非常有意义的错误,$mysqli不是一个对象,你不能在该对象上调用方法real_escape_string()。您在connect.php

中定义如下
// Create connection
$conn = new mysqli($servername, $username, $password, $db);

但在您的其他文件中,您开始将$conn解释为$mysqli,除非您将引用复制到$mysqli,否则您无法将其解释为$mysqli = $conn。比如$mysqli。 但我不鼓励这样做,您应该始终使用$conn或在整个代码中使用Redirect "/api/" "http://www.example.com:4500/api/"

答案 1 :(得分:1)

您将连接命名为$conn,而不是$mysqli。因此$mysqli不是对象,$conn是。

include '../connect.php';
$query = "INSERT INTO adstable (Brand, Description, Price, Size, Price, Barcode) 
          SELECT Brand, Description, Price, Size, Price, Barcode FROM invtable 
          WHERE Barcode='".$conn->real_escape_string($_REQUEST['Barcode'])."'";

$conn->query($query);

根据manual,我认为你从...... {/ p>

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$city = $mysqli->real_escape_string($city);

了解$mysqli如何分配连接new mysqli

在你的脚本中你有

$conn = new mysqli($servername, $username, $password, $db);

<强>更新

您更新的代码的连接错误(您的第一个版本没有)。

include '../connect.php';

$query = "INSERT INTO adstable (Brand, Description, Price, Size, Price, Barcode) 
          SELECT Brand, Description, Price, Size, Price, Barcode FROM invtable 
          WHERE Barcode='".$conn->real_escape_string($_REQUEST['Barcode']). "'";

$conn->query($query);