我在新问题
下打开了此问题我决定专注于使用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。有什么想法吗?
答案 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);