2015-09-25 60 views
0

我下一个新的问题获取错误,当我使用PHP

我决定把重点放在使用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>"; 

的脚本“提交的广告 - 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='".$mysqli->real_escape_string($_REQUEST['Barcode']).""; 

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

我碰到下面的错误,我不知道这是什么意思。

Connected successfully.
Fatal error: Call to a member function real_escape_string() on a non-object in /home/myaccount/public_html/florida-ave/submit-ads-florida.php on line 7

我还在学习,而且我使用了我找到的示例中的脚本,所以我可能不会为我的解决方案使用正确的语法。任何帮助表示赞赏。

UPDATE

我以来取得建议的变更。我的连接脚本是...

<?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. "; 
?> 

我提交的广告 - 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。有什么想法吗?

+1

你可以发布'connect.php'吗? – Kisaragi

+0

条码上缺少结束报价。 ''“。$ mysqli-> real_escape_string($ _ REQUEST ['Barcode'])。”“'应该在'''''中有单引号,或者可能在这个问题上跳了枪(起初错过了错误信息) 。$ mysqli'定义在哪里? – chris85

+0

我们需要查看connect.php来了解是否定义了$ mysqli,但是您收到的错误告诉我们最有可能是未定义的或已定义但未连接。 –

回答

1

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

您的错误清楚地说“$mysqli”不是一个对象。基本上主要的错误是@mysqli没有定义任何地方。检查您是否有它connect.php

其他

我盲目!假设你的connect.php没问题,因为你打印'连接成功'。 除此之外,你在最后错过了单引号,一个编码的建议是不要把它复杂,

<?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

+1

这就是'$ mysqli'的相同用法,所以应该有相同的错误。仍然不会成为一个对象。 – chris85

+0

同意,我想添加一个注意他的connect.php其实是问题 – spiderman

+0

以下是我的连接脚本... <?php \t $ servername =“localhost”; \t $ username =“name”; \t $ password =“password”; \t $ db =“database”; \t \t \t //创建连接 \t $康恩=新的mysqli($服务器名,用户名$,$密码,$分贝); \t \t //检查连接 \t如果($ conn-> connect_error){ \t模具( “连接失败” $ conn-> connect_error。); \t} \t echo“连接成功。”; \t?> –

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); 

每我会觉得你有从......

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

查看如何$mysqli分配的连接,new mysqlimanual

在你的脚本,你必须

$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);